使用tkinter脚本中的pyperclip保存到剪贴板时进行编码

时间:2017-07-12 09:19:53

标签: python tkinter pyperclip

我在 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把它拉出来时才会变得很时髦。

我希望解释是充分的。

提前谢谢!

1 个答案:

答案 0 :(得分: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]))

不再是德国人或日本人的时髦人物。其他语言如法语和中文现在也可以使用。

再次感谢您的输入!它为代码提供了新的视角。