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 命令行参数sys.argv
Sep 06 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python使用正则筛选信用卡
Jan 27 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Django ValuesQuerySet转json方式
Mar 16 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 Python
Python实战之OpenCV实现猫脸检测
Jun 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入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php中socket的用法详解
2014/10/24 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
accesskey 提交
2006/06/26 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
BootStrap 动态表单效果
2017/06/02 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
python生成随机图形验证码详解
2017/11/08 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python适配器模式代码实现解析
2019/08/02 Python
使用python实现学生信息管理系统
2021/02/25 Python
Oracle的内存结构(Memory structures)
2015/06/10 面试题
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
大学生学习生活的自我评价
2013/11/01 职场文书
农民致富事迹材料
2014/01/23 职场文书
爱心活动计划书
2014/04/26 职场文书
依法行政工作汇报
2014/10/28 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
pandas进行数据输入和输出的方法详解
2022/03/23 Python