python用tkinter實現一個gui的翻譯工具
阿新 • • 發佈:2020-10-27
#!/usr/bin/env python # -*- coding: utf-8 -*- from tkinter import * import hashlib import time import json import requests import random LOG_LINE_NUM = 0 class MY_GUI(): def __init__(self,init_window_name): self.init_window_name = init_window_name self.headers = { 'User-Agent': '自己的User-Agent','Referer': 'http://fanyi.youdao.com/','Cookie': '自己的Cookie' } self.data = { 'i': None,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': None,'sign': None,'ts': None,'bv': None,'doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME' } self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' #設定視窗 def set_init_window(self): self.init_window_name.title("翻譯工具_v1.0") #視窗名 #self.init_window_name.geometry('320x160+10+10') #290 160為視窗大小,+10 +10 定義視窗彈出時的預設展示位置 self.init_window_name.geometry('1068x681+10+10') #self.init_window_name["bg"] = "pink" #視窗背景色,其他背景色見:blog.csdn.net/chl0000/article/details/7657887 #self.init_window_name.attributes("-alpha",0.9) #虛化,值越小虛化程度越高 #標籤 self.init_data_label = Label(self.init_window_name,text="待處理資料") self.init_data_label.grid(row=0,column=0) self.result_data_label = Label(self.init_window_name,text="輸出結果") self.result_data_label.grid(row=0,column=12) self.log_label = Label(self.init_window_name,text="日誌") self.log_label.grid(row=12,column=0) #文字框 self.init_data_Text = Text(self.init_window_name,width=67,height=35) #原始資料錄入框 self.init_data_Text.grid(row=1,column=0,rowspan=10,columnspan=10) self.result_data_Text = Text(self.init_window_name,width=70,height=49) #處理結果展示 self.result_data_Text.grid(row=1,column=12,rowspan=15,columnspan=10) self.log_data_Text = Text(self.init_window_name,width=66,height=9) # 日誌框 self.log_data_Text.grid(row=13,columnspan=10) #按鈕 self.str_trans_to_md5_button = Button(self.init_window_name,text="轉換",bg="lightblue",width=10,command=self.str_trans) # 呼叫內部方法 加()為直接呼叫 self.str_trans_to_md5_button.grid(row=1,column=11) #功能函式 def str_trans(self): word = self.init_data_Text.get(1.0,END).strip().replace("\n","") #print("src =",word) if word: try: ts = str(int(time.time() * 10000)) salt = str(int(time.time() * 10000) + random.random() * 10 + 10) sign = 'fanyideskweb' + word + salt + ']BjuETDhU)zqSxf-=B#7m' sign = hashlib.md5(sign.encode('utf-8')).hexdigest() bv = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.77 Safari/537.36' bv = hashlib.md5(bv.encode('utf-8')).hexdigest() self.data['i'] = word self.data['salt'] = salt self.data['sign'] = sign self.data['ts'] = ts self.data['bv'] = bv re = requests.post(self.url,headers=self.headers,data=self.data) jieguo = re.json()['translateResult'][0][0].get('tgt') #print(jieguo) #輸出到介面 self.result_data_Text.delete(1.0,END) self.result_data_Text.insert(1.0,jieguo) self.write_log_to_Text("INFO:翻譯 success") except: self.result_data_Text.delete(1.0,"翻譯失敗") else: self.write_log_to_Text("ERROR:str_trans failed") #獲取當前時間 def get_current_time(self): current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) return current_time #日誌動態列印 def write_log_to_Text(self,logmsg): global LOG_LINE_NUM current_time = self.get_current_time() logmsg_in = str(current_time) +" " + str(logmsg) + "\n" #換行 if LOG_LINE_NUM <= 7: self.log_data_Text.insert(END,logmsg_in) LOG_LINE_NUM = LOG_LINE_NUM + 1 else: self.log_data_Text.delete(1.0,2.0) self.log_data_Text.insert(END,logmsg_in) def gui_start(): init_window = Tk() #例項化出一個父視窗 ZMJ_PORTAL = MY_GUI(init_window) # 設定根視窗預設屬性 ZMJ_PORTAL.set_init_window() init_window.mainloop() #父視窗進入事件迴圈,可以理解為保持視窗執行,否則介面不展示 gui_start()
執行效果:
自己可以用pyinstaller 打包成 exe隨時可以用。
省去了再開啟網頁去搜 索翻譯網頁,下載翻譯軟體。
以上就是python用tkinter實現一個gui的翻譯工具的詳細內容,更多關於python 翻譯工具的資料請關注我們其它相關文章!