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爬虫之抓取糗事百科代码分享
Nov 06 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python日志模块logging基本用法分析
Aug 23 Python
python语音识别实践之百度语音API
Aug 30 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
python实现贪吃蛇游戏
Mar 21 Python
python实现整数的二进制循环移位
Mar 08 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
python使用隐式循环快速求和的实现示例
Sep 11 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学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
Python多线程学习资料
2012/12/19 Python
python动态监控日志内容的示例
2014/02/16 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
进步之星获奖感言
2014/02/22 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
学雷锋感言
2015/08/03 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript