通过《用Python玩转谷歌翻译》,可以不开网页用谷歌翻译了。但还是有个痛点,那就是,每次翻译完之后,还要选中译文,ctrl+v复制,才能把译文复制出来进行编辑。我想让Python自动把翻译结果复制到剪贴板,这样切换到编辑软件,可以直接用。
实现这个功能的库是pyperclip,项目地址是:https://github.com/asweigart/pyperclip
首先,先安装pyperclip
pip install pyperclip
然后在代码中引用这个库
import pyperclip
第三,在输出翻译结果的两个位置加入复制功能代码
pyperclip.copy(result) #result是谷歌翻译的译文文本,类型是string
经过测试,成功实现功能!以下是全部代码:
import requests import json import pyperclip from googletrans import Translator from tkinter import Tk,Button,Entry,Label,Text,END class Application(object): def __init__(self): self.window = Tk() #调用googletrans里的Translator类。它的各项属性包括:src – source language (default: auto),dest – destination language (default: en),origin – original text,text – translated text,pronunciation – pronunciation self.fanyi = Translator() self.window.title(u'谷歌翻译') #设置窗口大小和位置 self.window.geometry('310x370+500+300') self.window.minsize(310,370) self.window.maxsize(310,370) #创建一个文本框 #self.entry = Entry(self.window) #self.entry.place(x=10,y=10,width=200,height=25) #self.entry.bind("<Key-Return>",self.submit1) self.result_text1 = Text(self.window,background = 'azure') # 喜欢什么背景色就在这里面找哦,但是有色差,得多试试:http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter self.result_text1.place(x = 10,y = 5,width = 285,height = 155) self.result_text1.bind("<Key-Return>",self.submit1) #创建一个按钮 #为按钮添加事件 self.submit_btn = Button(self.window,text=u'翻译',command=self.submit) self.submit_btn.place(x=205,y=165,width=35,height=25) self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean) self.submit_btn2.place(x=250,y=165,width=35,height=25) #翻译结果标题 self.title_label = Label(self.window,text=u'翻译结果:') self.title_label.place(x=10,y=165) #翻译结果 self.result_text = Text(self.window,background = 'light cyan') self.result_text.place(x = 10,y = 190,width = 285,height = 165) #回车翻译 def submit1(self,event): #从输入框获取用户输入的值 content = self.result_text1.get(0.0,END).strip().replace("\n"," ") #把这个值传送给服务器进行翻译 answer = self.fanyi.translate(content) result = answer.text #将结果显示在窗口中的文本框中 pyperclip.copy(result) #将翻译结果复制到剪贴板 self.result_text.delete(0.0,END) self.result_text.insert(END,result) #print(content) def submit(self): #从输入框获取用户输入的值 content = self.result_text1.get(0.0,END).strip().replace("\n"," ") #把这个值传送给服务器进行翻译 #answer是Translator这个类返回的结果。但是真正的翻译文本藏在结果当中的text属性里 answer = self.fanyi.translate(content) result = answer.text #将结果显示在窗口中的文本框中 pyperclip.copy(result) #将翻译结果复制到剪贴板 self.result_text.delete(0.0,END) self.result_text.insert(END,result) print(content) #清空文本域中的内容 def clean(self): self.result_text1.delete(0.0,END) self.result_text.delete(0.0,END) def run(self): self.window.mainloop() if __name__=="__main__": app = Application() app.run()