通过《用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()
    

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据