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 web程序
Sep 11 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python中的多重装饰器
Apr 11 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python Cookie 读取和保存方法
Dec 28 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python性能测量工具cProfile使用解析
Sep 26 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
keras中的backend.clip用法
May 22 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 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
php仿ZOL分页类代码
2008/10/02 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
javascript引导程序
2008/10/26 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
VUE安装使用教程详解
2019/06/03 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
zbar解码二维码和条形码示例
2014/02/07 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
重阳节登山活动方案
2014/02/03 职场文书
市级三好学生评语
2014/12/29 职场文书
挂靠协议书
2015/01/27 职场文书
结婚通知短信大全
2015/04/17 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server