ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python GUI图形界面tkinter:实现有道翻译小案例

2020-01-17 09:53:55  阅读:314  来源: 互联网

标签:__ tkinter python 图形界面 content window text1 result self


 

# 实现模拟有道翻译
# coding:utf-8
from tkinter import *
import requests

# 有道翻译
class YouDao:
    def __init__(self):
        pass

    def fanyi(self, content):
        # translate_o改成translate,可防止返回:{'errorCode': 50}
        # url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
        url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        headers = {
            'referer': 'http://fanyi.youdao.com/',
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.78 (Edition Baidu)'
        }
        data = {
            'i': content,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': '15791434983359',
            'sign': '4c3ba7ac1aefe25a7e0f6780c3f08512',
            'ts': '1579143498335',
            'bv': '120ea3adb00787750fbc44dd1af54b88',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTlME',
        }
        res = requests.post(url, headers=headers, data=data)
        if res.status_code == 200:
            result = res.json()
            if 'translateResult' in result:
                return result['translateResult'][0][0]['tgt']
            else:
                return result
        else:
            return '请求失败'

# 界面
class Application:
    def __init__(self):
        self.youdao = YouDao()

        # 创建窗口对象
        self.window = Tk()

        # 窗口对象的标题
        self.window.title(u'我的程序')

        # 设置窗口的大小和位置(宽:310,高:370,坐标:500,300)
        self.window.geometry("310x370+500+300")
        self.window.minsize(310,370)
        self.window.maxsize(310,370)

        # 创建一个文本框
        # self.text1 = Text(self.window, background='azure')
        self.text1 = Text(self.window, background='#ccc', foreground='black')
        self.text1.place(x=10, y=5, width=290, height=165) # 设置位置坐标和大小
        self.text1.bind('<Key-Return>', self.text1_event) # 绑定键盘回车键事件

        # 创建提示标题
        self.label1 = Label(self.window, text=u'翻译结果:')
        self.label1.place(x=10, y=175)

        # 创建按钮
        self.btn1 = Button(self.window, text='翻译', command=self.btn1_event)
        self.btn1.place(x=220, y=175, width=35, height=25)
        self.btn2 = Button(self.window, text='清空', command=self.btn2_event)
        self.btn2.place(x=263, y=175, width=35, height=25)

        # 创建结果文本框
        self.text2 = Text(self.window, background='black', foreground='white')
        self.text2.place(x=10, y=205, width=290, height=165)

    # text1 监听回车事件
    def text1_event(self, event):
        # 获取用户输入的值
        content = self.text1.get(0.0, END).strip().replace('\n', ' ')
        print(content)
        # 进行翻译
        result = self.youdao.fanyi(content)
        # 填写结果到结果输入框
        self.text2.delete(0.0, END)
        self.text2.insert(END, result)

    # btn1 翻译事件
    def btn1_event(self):
        # 获取用户输入的值
        content = self.text1.get(0.0, END).strip().replace('\n', ' ')
        print(content)

        # 进行翻译
        result = self.youdao.fanyi(content)

        # 填写结果到结果输入框
        self.text2.delete(0.0, END)
        self.text2.insert(END, result)

    # btn2 清空事件
    def btn2_event(self):
        # 清空文本框的内容
        self.text1.delete(0.0, END)
        self.text2.delete(0.0, END)

    def run(self):
        # 进入循环
        self.window.mainloop()

if __name__ == '__main__':
    app = Application()
    app.run()

 

运行结果:

遇到的问题:

1、解决有道翻译返回 {'errorCode': 50}的问题:

1)更改请求 url,把translate_o修改成translate

  参考:https://blog.csdn.net/qq_36697196/article/details/90696845

2)参考:https://blog.csdn.net/suixinlun/article/details/93976400

2、tkinter的基本操作:

   https://www.runoob.com/python/python-gui-tkinter.html

   https://www.cnblogs.com/happy-xiaoxiao/p/10494508.html

3.图形界面打包

1)使用pyinstaller来进行打包,工具安装命令:

pip install pyinstaller

2)打包命令:(只需编译入口文件即可,即:pyinstaller 选项 Python 源文件)

pyinstaller -F -w main.py

参考:https://www.jianshu.com/p/924a130a3d7e 

标签:__,tkinter,python,图形界面,content,window,text1,result,self
来源: https://www.cnblogs.com/KeenLeung/p/12204358.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有