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获得两个数组交集、并集、差集的方法
Mar 27 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python获取代码运行时间的实例代码
Jun 11 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
int在python中的含义以及用法
Jun 27 Python
Python中的self用法详解
Aug 06 Python
python和js交互调用的方法
Jun 23 Python
pandas apply多线程实现代码
Aug 17 Python
使用anaconda安装pytorch的实现步骤
Sep 03 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php对二维数组进行排序的简单实例
2013/12/19 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
初步探究Python程序的执行原理
2015/04/11 Python
Python中str.format()详解
2017/03/12 Python
详解Python3定时器任务代码
2019/09/23 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
安全生产承诺书
2014/03/26 职场文书
教师个人学习总结
2015/02/11 职场文书
村官个人总结范文
2015/03/03 职场文书
导游词之临安白水涧
2019/11/05 职场文书
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android