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 相关文章推荐
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 Python
简述Python中的进程、线程、协程
Mar 18 Python
深入理解Python装饰器
Jul 27 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python 实现敏感词过滤的方法
Jan 21 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
python实现五子棋游戏
Jun 18 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
python主要用于哪些方向
Jul 05 Python
用 Python 元类的特性实现 ORM 框架
May 19 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通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
JavaScript函数详解
2015/02/27 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python实现的解析crontab配置文件代码
2014/06/30 Python
python编码最佳实践之总结
2016/02/14 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
空指针到底是什么
2012/08/07 面试题
师范毕业生个人求职信
2013/12/09 职场文书
项目经理任命书范本
2014/06/05 职场文书
节约用电标语
2014/06/17 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
寻找成龙观后感
2015/06/12 职场文书
小学班级口号大全
2015/12/25 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL