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 20 Python
Python中的tuple元组详细介绍
Feb 02 Python
深入理解Python变量与常量
Jun 02 Python
Python unittest模块用法实例分析
May 25 Python
TensorFlow实现模型评估
Sep 07 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
django中间键重定向实例方法
Nov 10 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
Apr 01 Python
Python:__eq__和__str__函数的使用示例
Sep 26 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 日志缩略名的创建函数代码
2010/05/26 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
路政管理毕业自荐书范文
2014/02/10 职场文书
会计人员岗位职责
2014/03/19 职场文书
2014个人年度工作总结
2014/12/15 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript