tkinter的功能是如此强大,竟然还能做翻译软件。当然是在线的,我发现有一个quicktranslate模块,可以提供在线翻译功能,相当于提供了一个翻译的接口,利用它就可以制作在线翻译软件了。下面是代码,分享给大家。
注意要首先 pip install quicktranslate
#-*- coding:utf-8 -*- import tkinter as tk #使用Tkinter前需要先导入 from tkinter import messagebox,ttk import datetime,os,time,re,requests from quicktranslate import get_translate_baidu,get_translate_youdao class MY_GUI(tk.Tk): #初始化 def __init__(self): super().__init__() self.set_window() self.set_frame() self.set_body() #设置窗口 def set_window(self): self.title(\"文本翻译工具v1.0\") #窗口名 w_width=800 #工具宽度 w_height=600 #工具高度 scn_width=self.maxsize()[0] #屏幕宽度 x_point=(scn_width-w_width)//2 #取点让工具居中 self.geometry(\'%dx%d+%d+%d\' %(w_width,w_height,x_point,100)) #设置框架 def set_frame(self): self.frame1=tk.Frame(self,pady=15,padx=15) self.frame1.grid(row=0,column=0,sticky=\'w\') self.frame2=tk.Frame(self,pady=15,padx=15) self.frame2.grid(row=1,column=0,sticky=\'w\') self.frame3=tk.Frame(self,pady=15,padx=15) self.frame3.grid(row=2,column=0,sticky=\'w\') #设置组件 def set_body(self): ttk.Label(self.frame1,text=\'输入要翻译的内容:\').grid(row=0,column=0,sticky=\'w\') ybar=ttk.Scrollbar(self.frame1,orient=\'vertical\') textarea=tk.Text(self.frame1,width=100,height=12,yscrollcommand=ybar.set) ybar[\'command\']=textarea.yview textarea.grid(row=1,column=0,columnspan=2) ybar.grid(row=1,column=2,sticky=\'ns\') textarea.bind(\"<Double-Button-1>\",lambda event:self.getword(event,textarea)) #双击触发单词翻译 ttk.Button(self.frame1,text=\'点击翻译\',command=lambda:self.translator(textarea.get(1.0,\'end\'))).grid(row=2,column=0,sticky=\'w\') ttk.Button(self.frame1,text=\'清空\',command=lambda:self.clear(textarea)).grid(row=2,column=1,sticky=\'w\') #功能函数 def clear(self,textarea): #清空文本框 textarea.delete(1.0,\'end\') def is_cn(self,uchar): \"\"\"判断一个unicode是否是汉字\"\"\" if uchar >= u\'\\u4e00\' and uchar<=u\'\\u9fa5\': return True else: return False def filterchar(self,char): #过滤字母 word=filter(str.isalpha, char) word=\'\'.join(list(word)) return word def getword(self,event,textarea): #单词翻译 place=textarea.index(\'current\') row=int(place.split(\'.\')[0]) #第几行 col=int(place.split(\'.\')[1]) #第几列 col_start=col-15 col_end=col+15 part1=textarea.get(str(row)+\'.\'+str(col_start),str(row)+\'.\'+str(col)).split()[-1] part2=textarea.get(str(row)+\'.\'+str(col),str(row)+\'.\'+str(col_end)).split()[0] word_f=self.filterchar(part1+part2) word_t=get_translate_baidu(word_f) #百度翻译 if(word_t==\'wrong!\'): word_t=get_translate_youdao(word_f) #百度不行就用有道翻译 textarea=tk.Text(self.frame3,width=100,height=8) #第三个框架添加文本框 textarea.grid(row=0,column=0) textarea.delete(1.0,\'end\') textarea.insert(1.0,word_f+\':\\n\'+word_t) #文本框填入翻译结果 #生词写入生词本 if(word_t!=\'wrong!\'): with open(\'word.txt\',\'a\') as f: f.write(word_f+\' : \'+word_t+\"\\n\") def translator(self,content): #段落翻译 test_url=\'http://youdao.com\' try: requests.get(test_url,timeout=2) except: messagebox.showerror(\'警告\',\'没有联网\') if(self.is_cn(content)): #如果输入的是中文,那就是中译英,要用英文句号 sep=\".\" else: sep=\"。\" contents=content.split(\'\\n\') #段落分割 strs=\"\" for paragraph in contents: if(paragraph): sentences=paragraph.split(\'.\') #句子 for sentence in sentences: if(sentence): res=get_translate_youdao(sentence) #有道翻译 if(res==\'wrong!\'): res=get_translate_google(sentence) #有道不行就用谷歌翻译 strs+=res+sep strs+=\"\\n\" ybar=ttk.Scrollbar(self.frame2,orient=\'vertical\') textarea=tk.Text(self.frame2,width=100,height=12,yscrollcommand=ybar.set) #第二个框架添加文本框 textarea.bind(\"<Double-Button-1>\",lambda event:self.getword(event,textarea)) #双击触发单词翻译 如果是中译英 ybar[\'command\']=textarea.yview textarea.grid(row=0,column=0) textarea.delete(1.0,\'end\') textarea.insert(1.0,strs) #文本框填入翻译结果 ybar.grid(row=0,column=1,sticky=\'ns\') app=MY_GUI() app.mainloop()
这是效果,双击单词可自动查词,段落翻译默认用有道,不行用谷歌;单词翻译默认百度,不行用有道。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。