python用tkinter实现一个gui的翻译工具


Posted in Python onOctober 26, 2020
#!/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, column=0, 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,END)
        self.result_data_Text.insert(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 翻译工具的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python异常学习笔记
Feb 03 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python实现反转部分单向链表
Sep 27 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
python中的tcp示例详解
Dec 09 Python
详解python运行三种方式
May 13 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Docker如何部署Python项目的实现详解
Oct 26 #Python
python Gabor滤波器讲解
Oct 26 #Python
详解基于python的图像Gabor变换及特征提取
Oct 26 #Python
多个版本的python共存时使用pip的正确做法
Oct 26 #Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 #Python
如何使用Pytorch搭建模型
Oct 26 #Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 #Python
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
PHP新手上路(四)
2006/10/09 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
javascript动画浅析
2012/08/30 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
Python实现从订阅源下载图片的方法
2015/03/11 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python反转序列的方法实例分析
2018/03/21 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
支教自我鉴定
2014/01/18 职场文书
学生周末长期请假条
2014/02/15 职场文书
中学生英语演讲稿
2014/04/26 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
升学宴来宾致辞
2015/07/27 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL