日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python 制作一個gui界面的翻譯工具

瀏覽:99日期:2022-06-19 16:28:46
目錄一.準備工作二.預(yù)覽1.主界面2.翻譯3.支持多種語言哦三.源代碼3.1 My_Translator-v2.0.py3.2 Translator.py四.總結(jié)一.準備工作

除了Tkinter,還需要google_trans_new,沒有安裝這個庫的朋友,可以使用

pip install google_trans_new

安裝一下。

二.預(yù)覽1.主界面

python 制作一個gui界面的翻譯工具

2.翻譯

python 制作一個gui界面的翻譯工具

3.支持多種語言哦

python 制作一個gui界面的翻譯工具

三.源代碼

設(shè)計流程很簡單,這里就直接貼代碼了

3.1 My_Translator-v2.0.py

from tkinter import *from tkinter import messageboxfrom tkinter import ttkimport pyperclipimport threadingfrom tkinter.filedialog import askopenfilenamefrom Translator import Do_Trans'''使用combobox進行語言記錄'''class App: def __init__(self):self.window=Tk()self.window.title(’翻譯器-v2.0’)width=480height=480left=(self.window.winfo_screenwidth()-width)/2top=(self.window.winfo_screenheight()-height)/2self.window.geometry(’%dx%d+%d+%d’%(width,height,left,top))self.window.resizable(0,0)self.create_widget()self.set_widget()self.place_widget()self.language=’auto’self.window.mainloop() def create_widget(self):self.l1=ttk.Label(self.window)self.t1=Text(self.window)self.b1=ttk.Button(self.window)self.b2=ttk.Button(self.window)self.b3=ttk.Button(self.window)self.l2=ttk.Label(self.window)self.t2=Text(self.window)self.Scroll_vertical1 = Scrollbar(self.window, orient=VERTICAL)self.Scroll_vertical2 = Scrollbar(self.window, orient=VERTICAL)self.Scroll_level = Scrollbar(self.window, orient=HORIZONTAL)self.m=Menu(self.window)self.window[’menu’]=self.mself.l3=ttk.Label(self.window) def set_widget(self):self.l1.config(text=’待翻譯文本’,font=(’宋體’,10))self.b1.config(text=’清空輸入框’,command=lambda:self.thread_it(self.clear_t))self.b2.config(text=’翻譯’,command=lambda:self.thread_it(self.do_translate))self.b3.config(text=’復(fù)制翻譯內(nèi)容’,command=lambda:self.thread_it(self.copy_t))self.l2.config(text=’翻譯結(jié)果’,font=(’宋體’,10))self.Scroll_vertical1.config(command=self.t1.yview)self.t1[’yscrollcommand’] = self.Scroll_vertical1.setself.Scroll_vertical2.config(command=self.t2.yview)self.t2[’yscrollcommand’] = self.Scroll_vertical2.setself.t2[’xscrollcommand’]=self.Scroll_level.setself.s1=Menu(self.m,tearoff=False)self.s2=Menu(self.m,tearoff=False)self.s3=Menu(self.m,tearoff=False)self.m.add_cascade(label=’文件’,menu=self.s1)self.m.add_cascade(label=’操作’,menu=self.s2)self.m.add_cascade(label=’關(guān)于’,menu=self.s3)self.s1.add_command(label=’打開文本文件’,command=self.open_txt)self.s1.add_separator()self.s1.add_command(label=’退出’,command=self.quit_window)self.s2.add_command(label=’翻譯’,command=lambda:self.thread_it(self.do_translate))self.s2.add_command(label=’選擇語言’,command=self.open_topleval)self.s2.add_command(label=’清空內(nèi)容’,command=self.clear_t)self.s2.add_command(label=’復(fù)制結(jié)果’,command=lambda:self.thread_it(self.copy_t))self.s3.add_command(label=’說明’,command=self.show_infos)self.l3_var=StringVar()self.l3.config(textvariable=self.l3_var,background=’lightblue’)self.l3_var.set(’當(dāng)前[自動選擇]目標語言’)self.window.bind(’<Escape>’,self.escape)self.t1.bind(’<Return>’,lambda:self.thread_it(self.do_translate))self.window.protocol(’WM_DELETE_WINDOW’,self.quit_window)self.menubar = Menu(self.t1,tearoff=False)self.menubar.add_command(label='粘貼', command=self.do_paste)self.t1.bind(’<Button-3>’,self.paste)self.menubar2 = Menu(self.t2,tearoff=False)self.menubar2.add_command(label='粘貼', command=self.do_paste2)self.t2.bind(’<Button-3>’,self.paste2)self.current_select=0 def place_widget(self):self.l1.place(x=200,y=5)self.t1.place(x=10,y=30,height=150,width=450)self.Scroll_vertical1.place(x=445,y=30,height=150)self.b1.place(x=10,y=200)self.b2.place(x=180,y=200)self.b3.place(x=370,y=200)self.l2.place(x=200,y=228)self.t2.place(x=10,y=250,height=180,width=450)self.Scroll_vertical2.place(x=445,y=250,height=180)self.Scroll_level.place(x=10,y=430,width=450)self.l3.place(x=0,y=450,width=480,height=30) def open_topleval(self):self.select_lan_window=Toplevel()width=250height=50left=(self.select_lan_window.winfo_screenwidth()-width)/2top=(self.select_lan_window.winfo_screenheight()-height)/2self.select_lan_window.geometry(’%dx%d+%d+%d’%(width,height,left,top))self.select_lan_window.resizable(0,0)self.s_combobox_var=StringVar()self.language_table=Do_Trans().get_language_table()self.s_combobox=ttk.Combobox(self.select_lan_window,textvariable=self.s_combobox_var,justify=’center’,state=’readonly’,width=17,value=[language[’language’] for language in self.language_table])#對當(dāng)前選中語言進行記錄if self.current_select==0: self.s_combobox.current(0)else: self.s_combobox.current(self.current_select)self.s_b1=ttk.Button(self.select_lan_window,text=’選擇’,command=self.select_lan)self.s_combobox.pack(side=LEFT)self.s_b1.pack(side=RIGHT)self.select_lan_window.mainloop() def select_lan(self):self.current_select=self.s_combobox.current()self.now_language=self.language_table[self.s_combobox.current()][’language’]messagebox.showinfo(’提示’,f’當(dāng)前選擇 [{self.now_language}] 作為目標語言’)self.l3_var.set(f’選擇[{self.now_language}]作為目標語言’)self.now_lan=self.language_table[self.s_combobox.current()][’short’]self.select_lan_window.destroy() def open_txt(self):txt_path = askopenfilename(title=’選擇一個txt文本文件’,filetypes=[(’txt source file’,’*.txt’)])if txt_path: self.t1.delete(’0.0’,END) with open(txt_path,’r’,encoding=’utf-8’)as f:for line in f.readlines(): self.t1.insert(END,line) f.close() def paste(self,event):self.menubar.post(event.x_root,event.y_root) def do_paste(self):self.t1.insert(END,pyperclip.paste()) def paste2(self,event):self.menubar2.post(event.x_root,event.y_root) def do_paste2(self):self.t2.insert(END,pyperclip.paste()) def escape(self,event):self.quit_window() def quit_window(self):ret=messagebox.askyesno(’退出’,’是否要退出?’)if ret: self.window.destroy() def do_translate(self):try: self.aim_language=self.now_lanexcept AttributeError: self.aim_language= self.languageself.t2.delete(’0.0’,END)text=self.t1.get(’0.0’,END)if len(text)!=1: self.l3_var.set(’正在翻譯...’) t=Do_Trans() result=t.translate(text,self.aim_language) if result:self.l3.config(background=’lightblue’)self.t2.insert(END,result.strip())try: self.l3_var.set(f’翻譯完成...已翻譯為[{self.now_language}]’)except AttributeError: self.l3_var.set(f’翻譯完成...已[自動選擇目標語言]’) else:self.l3_var.set(’翻譯失敗,請檢查網(wǎng)絡(luò)!’)self.l3.config(background=’red’)else: messagebox.showwarning(’警告’,’請輸入內(nèi)容!’) self.l3.config(background=’red’) self.l3_var.set(’請輸入內(nèi)容’) def clear_t(self):self.t1.delete(’0.0’,END)self.t2.delete(’0.0’,END) def copy_t(self):tr_res=self.t2.get(’0.0’,END)pyperclip.copy(tr_res)spam = pyperclip.paste()if spam: self.l3.config(background=’lightyellow’) self.l3_var.set(’復(fù)制成功!’) def show_infos(self):messagebox.showinfo(’說明’,’作者:??Vメ’) def thread_it(self,func,*args):t=threading.Thread(target=func,args=args)t.setDaemon(True)t.start()if __name__ == ’__main__’: a=App()3.2 Translator.py

from google_trans_new import google_translatorimport reclass Do_Trans(): def get_language_table(self,):lan_table1 = lan_table.strip().replace('’', ’’)names = re.findall(r’[u4e00-u9fa5()]+’, lan_table1)lans = re.findall(r’[^u4e00-u9fa5 s:()]+’, lan_table1)language_table = []for language in zip(names, lans): item = {} item[’language’] = language[0] item[’short’] = language[1] language_table.append(item)return language_table def translate(self,text,language):try: t=google_translator().translate(text,language) return texcept: return Falselan_table=’’’’自動選擇’: ’auto’’南非荷蘭語’: ’af’’阿爾巴尼亞語’: ’sq’’阿姆哈拉語’: ’am’’阿拉伯語’: ’ar’’亞美尼亞語’: ’hy’’阿塞拜疆語’: ’az’’巴斯克語’: ’eu’’白俄羅斯語’: ’be’’孟加拉語’: ’bn’’波斯尼亞語’: ’bs’’保加利亞語’: ’bg’’加泰羅尼亞語’: ’ca’’宿務(wù)語’: ’ceb’’中文(簡體)’: ’zh’’中文(繁體)’: ’zh-TW’’科西嘉語’: ’co’’克羅地亞語’: ’hr’’捷克語’: ’cs’’丹麥語’: ’da’’荷蘭語’: ’nl’’英語’: ’en’’世界語’: ’eo’’愛沙尼亞語’: ’et’’芬蘭語’: ’fi’’法語’: ’fr’’弗里西語’: ’fy’’加利西亞語’: ’gl’’格魯吉亞語’: ’ka’’德語’: ’de’’希臘語’: ’el’’古吉拉特語’: ’gu’’海地克里奧爾語’: ’ht’’豪薩語’: ’ha’’夏威夷語’: ’haw’’希伯來語’: ’he’’印地語’: ’hi’’苗語’: ’hmn’’匈牙利語’: ’hu’’冰島語’: ’is’’伊博語’: ’ig’’印尼語’: ’id’’愛爾蘭語’: ’ga’’意大利語’: ’it’’日語’: ’ja’’爪哇語’: ’jw’’卡納達語’: ’kn’’哈薩克語’: ’kk’’高棉語’: ’km’’韓語’: ’ko’’庫爾德語’: ’ku’’吉爾吉斯語’: ’ky’’老撾語’: ’lo’’拉丁語’: ’la’’拉脫維亞語’: ’lv’’立陶宛語’: ’lt’’盧森堡語’: ’lb’’馬其頓語’: ’mk’’馬爾加什語’: ’mg’’馬來語’: ’ms’’馬拉雅拉姆語’: ’ml’’馬耳他語’: ’mt’’毛利語’: ’mi’’馬拉地語’: ’mr’’蒙古語’: ’mn’’緬甸語’: ’my’’尼泊爾語’: ’ne’’挪威語’: ’no’’尼楊扎語(齊切瓦語)’: ’ny’’普什圖語’: ’ps’’波斯語’: ’fa’’波蘭語’: ’pl’’葡萄牙語’: ’pt’’旁遮普語’: ’pa’’羅馬尼亞語’: ’ro’’俄語’: ’ru’’薩摩亞語’: ’sm’’蘇格蘭蓋爾語’: ’gd’’塞爾維亞語’: ’sr’’塞索托語’: ’st’’修納語’: ’sn’’信德語’: ’sd’’僧伽羅語’: ’si’’斯洛伐克語’: ’sk’’斯洛文尼亞語’: ’sl’’索馬里語’: ’so’’西班牙語’: ’es’’巽他語’: ’su’’斯瓦希里語’: ’sw’’瑞典語’: ’sv’’塔加洛語(菲律賓語)’: ’tl’’塔吉克語’: ’tg’’泰米爾語’: ’ta’’泰盧固語’: ’te’’泰語’: ’th’’土耳其語’: ’tr’’烏克蘭語’: ’uk’’烏爾都語’: ’ur’’烏茲別克語’: ’uz’’越南語’: ’vi’’威爾士語’: ’cy’’班圖語’: ’xh’’意第緒語’: ’yi’’約魯巴語’: ’yo’’祖魯語’: ’zu’’南非荷蘭語’: ’af’’阿爾巴尼亞語’: ’sq’’阿姆哈拉語’: ’am’’阿拉伯語’: ’ar’’亞美尼亞語’: ’hy’’阿塞拜疆語’: ’az’’巴斯克語’: ’eu’’白俄羅斯語’: ’be’’孟加拉語’: ’bn’’波斯尼亞語’: ’bs’’保加利亞語’: ’bg’’加泰羅尼亞語’: ’ca’’宿務(wù)語’: ’ceb’’中文(簡體)’: ’zh’’中文(繁體)’: ’zh-TW’’科西嘉語’: ’co’’克羅地亞語’: ’hr’’捷克語’: ’cs’’丹麥語’: ’da’’荷蘭語’: ’nl’’英語’: ’en’’世界語’: ’eo’’愛沙尼亞語’: ’et’’芬蘭語’: ’fi’’法語’: ’fr’’弗里西語’: ’fy’’加利西亞語’: ’gl’’格魯吉亞語’: ’ka’’德語’: ’de’’希臘語’: ’el’’古吉拉特語’: ’gu’’海地克里奧爾語’: ’ht’’豪薩語’: ’ha’’夏威夷語’: ’haw’’希伯來語’: ’he’’印地語’: ’hi’’苗語’: ’hmn’’匈牙利語’: ’hu’’冰島語’: ’is’’伊博語’: ’ig’’印尼語’: ’id’’愛爾蘭語’: ’ga’’意大利語’: ’it’’日語’: ’ja’’爪哇語’: ’jw’’卡納達語’: ’kn’’哈薩克語’: ’kk’’高棉語’: ’km’’韓語’: ’ko’’庫爾德語’: ’ku’’吉爾吉斯語’: ’ky’’老撾語’: ’lo’’拉丁語’: ’la’’拉脫維亞語’: ’lv’’立陶宛語’: ’lt’’盧森堡語’: ’lb’’馬其頓語’: ’mk’’馬爾加什語’: ’mg’’馬來語’: ’ms’’馬拉雅拉姆語’: ’ml’’馬耳他語’: ’mt’’毛利語’: ’mi’’馬拉地語’: ’mr’’蒙古語’: ’mn’’緬甸語’: ’my’’尼泊爾語’: ’ne’’挪威語’: ’no’’尼楊扎語(齊切瓦語)’: ’ny’’普什圖語’: ’ps’’波斯語’: ’fa’’波蘭語’: ’pl’’葡萄牙語’: ’pt’’旁遮普語’: ’pa’’羅馬尼亞語’: ’ro’’俄語’: ’ru’’薩摩亞語’: ’sm’’蘇格蘭蓋爾語’: ’gd’’塞爾維亞語’: ’sr’’塞索托語’: ’st’’修納語’: ’sn’’信德語’: ’sd’’僧伽羅語’: ’si’’斯洛伐克語’: ’sk’’斯洛文尼亞語’: ’sl’’索馬里語’: ’so’’西班牙語’: ’es’’巽他語’: ’su’’斯瓦希里語’: ’sw’’瑞典語’: ’sv’’塔加洛語(菲律賓語)’: ’tl’’塔吉克語’: ’tg’’泰米爾語’: ’ta’’泰盧固語’: ’te’’泰語’: ’th’’土耳其語’: ’tr’’烏克蘭語’: ’uk’’烏爾都語’: ’ur’’烏茲別克語’: ’uz’’越南語’: ’vi’’威爾士語’: ’cy’’班圖語’: ’xh’’意第緒語’: ’yi’’約魯巴語’: ’yo’’祖魯語’: ’zu’’’’四.總結(jié)

本次依然使用Tkinter做了一款翻譯器,但無論是界面還是功能都在上一版有了很大改進1.支持txt文本文件導(dǎo)入翻譯2.使用Combobox記錄當(dāng)前目標語言3.調(diào)用谷歌翻譯接口,翻譯準確4.自動識別源語言類型5.加入鼠標右鍵事件,粘貼更方便GUI打包好放在了藍奏云,歡迎各位交流討論。

以上就是python 制作一個gui的翻譯工具的詳細內(nèi)容,更多關(guān)于python gui翻譯工具的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩大片在线播放| 红杏一区二区三区| 日韩综合一区二区| 亚洲综合不卡| 日韩精品免费一区二区在线观看| 国产精品天天看天天狠| 男人的天堂亚洲一区| 麻豆理论在线观看| 国产精品久久久久毛片大屁完整版| 日韩国产网站| 老司机精品视频网| 日韩激情一区二区| 首页国产欧美久久| 欧美一级精品| 久久精品女人| 国产精品亚洲人成在99www| 免费观看在线综合色| 亚洲二区精品| 99精品视频在线| 国产精品专区免费| 精品久久美女| 日韩不卡免费视频| 精品午夜久久| 国产日韩欧美三级| 日本亚洲欧洲无免费码在线| 午夜欧美理论片| 亚洲精品乱码日韩| 电影天堂国产精品| 亚洲开心激情| 欧美日韩视频一区二区三区| 精精国产xxxx视频在线播放| 日韩中文影院| 亚洲电影有码| 欧洲精品一区二区三区| 都市激情国产精品| 日韩精品dvd| 欧产日产国产精品视频| 亚洲精品一二三区区别| 一区二区视频欧美| 亚洲精品2区| 亚洲在线观看| 亚洲精品综合| 日韩高清不卡在线| 欧美一区在线观看视频| 成人在线黄色| 成人啊v在线| 男女性色大片免费观看一区二区 | 亚洲资源网站| 91福利精品在线观看| 免费高清在线一区| 老鸭窝毛片一区二区三区| 亚洲一区二区三区久久久| 亚洲毛片视频| 国产精品一区毛片| 精品视频一区二区三区在线观看| 久久在线91| 日韩大片在线| 99国产精品| 日韩一区二区三区免费视频| 国产欧美日韩精品一区二区免费| 久久香蕉网站| 日韩毛片在线| 亚洲专区在线| 国产精品视频一区二区三区综合| 国产探花一区| 日韩电影免费网址| 在线午夜精品| 欧美一区二区三区久久精品| 日韩av在线播放网址| 久久久一二三| 免费不卡在线视频| 欧美黑人做爰爽爽爽| 成人精品久久| 国产亚洲福利| 国产精品久久国产愉拍| 国产高清不卡| 国产一区二区高清| 国产日韩欧美中文在线| 日本一区二区高清不卡| 四虎4545www国产精品| 亚洲天堂日韩在线| 久久爱www.| 国产高清久久| 国产欧美91| 91精品国产调教在线观看 | 日本久久成人网| 日韩一区精品字幕| 国产精品99一区二区三| 丝袜美腿亚洲色图| 久久免费福利| 国产视频亚洲| 精品在线网站观看| 亚洲一区日韩| 欧美日韩一区二区国产| 制服诱惑一区二区| 国产精品2023| 老司机精品久久| 91精品丝袜国产高跟在线| 欧洲精品一区二区三区| 国产日韩电影| 天堂俺去俺来也www久久婷婷| 欧美极品中文字幕| 三级欧美韩日大片在线看| 精品国产美女a久久9999| 日韩高清在线不卡| 在线视频观看日韩| 久久超碰99| 一本大道色婷婷在线| 亚洲精品日本| 免费av一区| 另类综合日韩欧美亚洲| 噜噜噜躁狠狠躁狠狠精品视频| 国产999精品在线观看| 免费黄网站欧美| 日本精品影院| 麻豆久久久久久久| 伊人www22综合色| 亚洲天堂久久| bbw在线视频| 国产福利一区二区三区在线播放| 久久福利影视| 欧美午夜精彩| 国产成人精品一区二区三区免费 | 久久精品日韩欧美| 奇米色欧美一区二区三区| 在线国产一区| 国产在线不卡一区二区三区| 日本aⅴ精品一区二区三区| 婷婷国产精品| 超级白嫩亚洲国产第一| 亚洲午夜久久| 午夜精品久久久久久久久久蜜桃| 日韩国产欧美三级| 不卡在线一区| 国产精品成人国产| 男女性色大片免费观看一区二区| 国产一卡不卡| 麻豆国产在线| av不卡在线| 日韩黄色av| 亚洲精品在线观看91| 精品国模一区二区三区| 1024精品久久久久久久久| 九九色在线视频| 午夜精品一区二区三区国产| 国产成人精品福利| 日韩一级精品| 国产精品自拍区| 99久久九九| 午夜国产欧美理论在线播放| 亚洲一级高清| 国产毛片一区| 国产亚洲精品美女久久久久久久久久| 成人午夜亚洲| 日韩一区二区三区在线看| 国产精品黑丝在线播放| 国产精品成人**免费视频 | 日韩精品一区二区三区中文在线 | 欧美日韩va| 日韩视频久久| 日欧美一区二区| 91九色精品国产一区二区| 欧美91视频| 亚洲狼人精品一区二区三区| 在线看片日韩| 国产成人精品免费视| 波多视频一区| 久久影视一区| 香蕉成人av| 在线观看亚洲精品福利片| 国产精品宾馆| 日韩国产精品久久久| 国产尤物精品| 九九久久电影| 老司机免费视频一区二区三区| 91嫩草精品| 日韩一区二区三区四区五区| 在线一区二区三区视频| 日韩欧美四区| 国产精品啊啊啊| 久久狠狠婷婷| 日韩欧美中文在线观看| 欧美激情日韩| 成人国产精品| 国产精品亚洲综合色区韩国| 欧美成人国产| 国产欧美午夜| 石原莉奈一区二区三区在线观看| av中文资源在线资源免费观看| 黄色成人91| 国产传媒在线观看| 高清av一区| 日韩成人a**站| 极品av在线| 中文在线中文资源| 免费精品一区| 丝袜a∨在线一区二区三区不卡| 国产91在线精品| 国产视频网站一区二区三区| 国产精品乱战久久久|