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

标签 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 将其拉出时,它才会变得很时髦。

我希望解释足够。

提前谢谢您!

最佳答案

事实证明我只需要在这里做一个小小的调整:

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]))

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

再次感谢您的投入!它对于获得对代码的新视角有很大帮助。

关于python - 在 tkinter 脚本中使用 pyperclip 保存到剪贴板时进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053561/

相关文章:

python - 访问 Travis-CI 上的剪贴板

python - 在 tkinter GUI 的另一侧制作按钮

python - 你如何在 Python 中绘制网格和矩形?

python - 名称错误 : global name 'reverse' is not defined

python - Django 内部连接查询集

user-interface - Python 中的“选中所有框”复选框

python - Pyperclip 报错

python - 如何查找 python3 模块的位置并调试 ImportError

python - 添加一行文本

python - 线程可以在 Python 中创建子线程吗?