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 30 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
django框架中间件原理与用法详解
Dec 10 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
python exit出错原因整理
Aug 31 Python
Python可视化工具如何实现动态图表
Oct 23 Python
python 实现socket服务端并发的四种方式
Dec 14 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中实现Javascript的escape()函数代码
2010/08/08 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
12步教你理解Python装饰器
2016/02/25 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
了解一下python内建模块collections
2020/09/07 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
《一件运动衫》教学反思
2014/02/19 职场文书
结婚周年感言
2014/02/24 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
公共场所禁烟标语
2014/06/25 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年公司工作总结
2015/04/25 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记