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 相关文章推荐
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
Python 装饰器深入理解
Mar 16 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python内置函数reversed()用法分析
Mar 20 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
Django restframework 源码分析之认证详解
Feb 22 Python
Python调用.NET库的方法步骤
Dec 27 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
4种方法python批量修改替换列表中元素
Apr 07 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递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
php 基础函数
2017/02/10 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
js function使用心得
2010/05/10 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
JS实现li标签的删除
2019/04/12 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
老生常谈Python进阶之装饰器
2017/05/11 Python
python如何让类支持比较运算
2018/03/20 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
Python中@property的理解和使用示例
2019/06/11 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
高级电工工作职责
2013/11/21 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
业务员管理制度范本
2015/08/06 职场文书
小学主题班会教案
2015/08/17 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
python tkinter实现定时关机
2021/04/21 Python