python3GUI製作翻譯器和MD5加密器
阿新 • • 發佈:2018-11-14
from tkinter import * import hashlib import time import TK英語翻譯器 LOG_LINE_NUM = 0 class MY_GUI(): def __init__(self,init_window_name): self.init_window_name = init_window_name #設定視窗 def set_init_window(self): self.init_window_name.title("文字處理工具_v1.2 by: 陳月白") #視窗名 #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, column=0, columnspan=10) #按鈕 self.str_trans_to_md5_button = Button(self.init_window_name, text="字串轉MD5", bg="lightblue", width=10,command=self.str_trans_to_md5) # 呼叫內部方法 加()為直接呼叫 self.str_trans_to_md5_button.grid(row=1, column=11) self.str_trans_to_eng_button = Button(self.init_window_name, text="翻譯", bg="lightblue", width=10,command=self.str_trans_to_eng) # 呼叫內部方法 加()為直接呼叫 self.str_trans_to_eng_button.grid(row=2, column=11) #功能函式 def str_trans_to_md5(self): src = self.init_data_Text.get(1.0,END).strip().replace("\n","").encode() print(src) #print("src =",src) if src: try: myMd5 = hashlib.md5() myMd5.update(src) myMd5_Digest = myMd5.hexdigest() #print(myMd5_Digest) #輸出到介面 self.result_data_Text.delete(1.0,END) self.result_data_Text.insert(1.0,myMd5_Digest) self.write_log_to_Text("INFO:str_trans_to_md5 success") except: self.result_data_Text.delete(1.0,END) self.result_data_Text.insert(1.0,"字串轉MD5失敗") else: self.write_log_to_Text("ERROR:str_trans_to_md5 failed") def str_trans_to_eng(self): src = self.init_data_Text.get(1.0,END) print("src =",src) if src: try: trans=TK英語翻譯器.translate(src) #print(myMd5_Digest) #輸出到介面 self.result_data_Text.delete(1.0,END) self.result_data_Text.insert(1.0,trans) self.write_log_to_Text("INFO:str_trans_to_eng success") except: self.result_data_Text.delete(1.0,END) self.result_data_Text.insert(1.0,"你要翻譯的是外星語言嗎?") else: self.write_log_to_Text("ERROR:str_trans_to_eng 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()
md5轉換器參考-----陳月白 http://www.cnblogs.com/chenyuebai--------
TK英語翻譯器.py
import json
import time
import random
import hashlib
import requests
def translate(content):
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
# 定義變數
client = 'fanyideskweb'
ctime = int(time.time() * 1000)
salt = str(ctime + random.randint(1, 10))
# key = 'rY0D^0\'nM0}g5Mm1z%1G4' 以前版本的祕鑰
key = 'aNPG!!u6sesA> [email protected](-'
sign = hashlib.md5((client + content + salt + key).encode('utf-8')).hexdigest()
# 表單資料
data = {}
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = salt
data['sign'] = sign
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CL1CKBUTTON'
data['typoResult'] = 'false'
# 請求頭
head = {}
head['Accept-Language'] = 'zh-CN,zh;q=0.9'
head['Host'] = 'fanyi.youdao.com'
head['Origin'] = 'http://fanyi.youdao.com'
head['Referer'] = 'http://fanyi.youdao.com/'
head[
'Cookie'] = ' [email protected]; JSESSIONID=aaa9_E-sQ3CQWaPTofjew; OUTFOX_SEARCH_USER_ID_NCOO=2007801178.0378454; fanyi-ad-id=39535; fanyi-ad-closed=1; ___rl__test__cookies=' + str(
ctime)
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5383.400 QQBrowser/10.0.1313.400'
request = requests.request('POST',url,data=data,headers=head)
# a=request.json()
a=json.loads(request.text)
result = a['translateResult'][0][0]['tgt']
return result