通过《用Python玩转谷歌翻译》,可以不开网页用谷歌翻译了。但还是有个痛点,那就是,每次翻译完之后,还要选中译文,ctrl+v复制,才能把译文复制出来进行编辑。我想让Python自动把翻译结果复制到剪贴板,这样切换到编辑软件,可以直接用。
实现这个功能的库是pyperclip,项目地址是:https://github.com/asweigart/pyperclip
首先,先安装pyperclip
Python
x
1
1
pip install pyperclip
然后在代码中引用这个库
Python
1
1
1
import pyperclip
第三,在输出翻译结果的两个位置加入复制功能代码
Python
1
2
1
pyperclip.copy(result)
2
#result是谷歌翻译的译文文本,类型是string
经过测试,成功实现功能!以下是全部代码:
Python
1
88
88
1
import requests
2
import json
3
import pyperclip
4
from googletrans import Translator
5
from tkinter import Tk,Button,Entry,Label,Text,END
6
7
class Application(object):
8
def __init__(self):
9
self.window = Tk()
10
#调用googletrans里的Translator类。它的各项属性包括:src – source language (default: auto),dest – destination language (default: en),origin – original text,text – translated text,pronunciation – pronunciation
11
self.fanyi = Translator()
12
13
14
self.window.title(u'谷歌翻译')
15
#设置窗口大小和位置
16
self.window.geometry('310x370+500+300')
17
self.window.minsize(310,370)
18
self.window.maxsize(310,370)
19
#创建一个文本框
20
#self.entry = Entry(self.window)
21
#self.entry.place(x=10,y=10,width=200,height=25)
22
#self.entry.bind("<Key-Return>",self.submit1)
23
self.result_text1 = Text(self.window,background = 'azure')
24
# 喜欢什么背景色就在这里面找哦,但是有色差,得多试试:http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter
25
self.result_text1.place(x = 10,y = 5,width = 285,height = 155)
26
self.result_text1.bind("<Key-Return>",self.submit1)
27
28
#创建一个按钮
29
#为按钮添加事件
30
self.submit_btn = Button(self.window,text=u'翻译',command=self.submit)
31
self.submit_btn.place(x=205,y=165,width=35,height=25)
32
self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean)
33
self.submit_btn2.place(x=250,y=165,width=35,height=25)
34
35
#翻译结果标题
36
self.title_label = Label(self.window,text=u'翻译结果:')
37
self.title_label.place(x=10,y=165)
38
#翻译结果
39
40
self.result_text = Text(self.window,background = 'light cyan')
41
self.result_text.place(x = 10,y = 190,width = 285,height = 165)
42
#回车翻译
43
def submit1(self,event):
44
#从输入框获取用户输入的值
45
content = self.result_text1.get(0.0,END).strip().replace("\n"," ")
46
#把这个值传送给服务器进行翻译
47
48
answer = self.fanyi.translate(content)
49
result = answer.text
50
#将结果显示在窗口中的文本框中
51
52
pyperclip.copy(result)
53
#将翻译结果复制到剪贴板
54
55
self.result_text.delete(0.0,END)
56
self.result_text.insert(END,result)
57
58
#print(content)
59
60
def submit(self):
61
#从输入框获取用户输入的值
62
content = self.result_text1.get(0.0,END).strip().replace("\n"," ")
63
#把这个值传送给服务器进行翻译
64
65
#answer是Translator这个类返回的结果。但是真正的翻译文本藏在结果当中的text属性里
66
answer = self.fanyi.translate(content)
67
result = answer.text
68
#将结果显示在窗口中的文本框中
69
70
pyperclip.copy(result)
71
#将翻译结果复制到剪贴板
72
73
self.result_text.delete(0.0,END)
74
self.result_text.insert(END,result)
75
print(content)
76
#清空文本域中的内容
77
def clean(self):
78
self.result_text1.delete(0.0,END)
79
self.result_text.delete(0.0,END)
80
81
def run(self):
82
self.window.mainloop()
83
84
85
if __name__=="__main__":
86
app = Application()
87
app.run()
88