1

我在Python 3.5中组装了一个客户端,可用于从站点检索已完成的翻译作业。出于可用性原因,我决定使用将翻译后的内容复制到剪贴板的按钮。根据翻译是纯文本还是保存在文件中,按钮会显示“下载”或“复制到剪贴板”。

它在大多数情况下都有效 - 我可以通过单击按钮然后将内容粘贴到文本编辑器来毫无问题地复制和粘贴英文文本。

不幸的是,在处理德语(ä、ö 和 ü 之类的东西)时,我得到了一些时髦的字符,而日语变成了糊状。

 def retrieveJobs(self):

     availableJobIDs = gengo.getTranslationJobs(status='reviewable')['response']

         text_count = 0
         text_dict = {}
         file_count = 0
         file_dict = {}

         for i in range(len(availableJobIDs)):

         job = gengo.getTranslationJob(id=availableJobIDs[i]['job_id'])['response']['job']

         title = job['slug']
         titleLabel = tk.Label(self, text=title)
         titleLabel.grid(row=i+3, sticky=tk.E)


         if 'file_url_tgt' in job.keys():
                link = job['file_url_tgt']
                file_dict[file_count] = link
                linkButton = tk.Button(self, text='ダウンロード', 
                                       command=lambda file_count=file_count: urllib.request.urlopen(url=file_dict[file_count]))
                linkButton.grid(row=i+3, column=1, sticky=tk.W+tk.E)
                file_count += 1
         else:
                text = job['body_tgt']
                text_dict[text_count] = text
                copyButton = tk.Button(self, text='訳文をコピーする', 
                                       command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count]))
                copyButton.grid(row=i+3, column=1, sticky=tk.W)
                text_count += 1

脚本的头部标有

# -*- coding: utf-8 -*-

但是,当我按下其中一个按钮以复制日语文本时,例如

これはどのように動作し、すべての順序のどこに表示する短いテキストです。

(不要介意意思,这是胡言乱语)并将其复制到Word文件中,生成的文本如下所示:

これはどのように動作し、すべての順序のどこに表示する短いテキストです。

如何修改代码以正确显示日文字符?从代码中可以看出,文本存储在字典中,此时仍然完好无损。只有当使用 pyperclip 将其拉出时,它才会变得很时髦。

我希望解释是足够的。

先感谢您!

4

1 回答 1

1

原来我只需要在这里做一个小的调整:

copyButton = tk.Button(self, 
                       text='訳文をコピーする', 
                       command=lambda text_count=text_count: tk.clipboard_append(text_dict[text_count]))

功能版本如下所示:

copyButton = tk.Button(self, 
                       text='訳文をコピーする', 
                       command=lambda text_count=text_count: root.clipboard_append(text_dict[text_count]))

德语或日语中不再有时髦的字符。法语和中文等其他语言现在也可以使用。

再次感谢您的输入!对代码有新的看法很有帮助。

于 2017-07-13T07:08:13.387 回答