1. 程式人生 > 程式設計 >python用tkinter實現一個gui的翻譯工具

python用tkinter實現一個gui的翻譯工具

#!/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()

執行效果:

python用tkinter實現一個gui的翻譯工具

自己可以用pyinstaller 打包成 exe隨時可以用。

python用tkinter實現一個gui的翻譯工具

省去了再開啟網頁去搜 索翻譯網頁,下載翻譯軟體。

以上就是python用tkinter實現一個gui的翻譯工具的詳細內容,更多關於python 翻譯工具的資料請關注我們其它相關文章!