赞
踩
开始学习GUI编程了,如果简单写个HELLO WORLD感觉太简单了,之前在B站翻到老师在讲通过Tkinter、爬虫技术写了个基于有道的翻译小软件,在网上又搜了一下爬虫翻译软件相关的专题,发现还是有很多的大神。本文是参考大神http://www.lanbainan.cn/2018/09/08/2018-09-08/实现了翻译的功能,参考文章https://www.jb51.net/article/143390.htm又加入了机器人ALICE的部分。
因为ALICE只支持英文,所以下想到整合上翻译功能,这样,在输入的时候自动识别中文还是英文,然后翻译成英文提交给ALICE,最后当然把ALICE的返回部分再翻译成中文显示出来。效果如下
点击发送之后,输入框自动清空,然后把发送和接收的数据添加到“对话框”中了。
如果了解过爬虫的话,翻译的原理其实挺简单,找到翻译的时候实际的URL和提交的数据就可以了。具体方法就不详细论述了,资料一大堆。
本文的“翻译引擎”是用必应翻译,在源代码中也可以看出来,其实用什么翻译都可以结果也都差不多,只是必应好像不需要AGENT,有道、百度啥的好像需要AGENT。
- from tkinter import *
- from tkinter import messagebox
- import requests
- from tkinter import scrolledtext
- import tkinter as tk
- import aiml
- import sys
- import os
-
- def get_module_dir(name):
- print("module", sys.modules[name])
- path = getattr(sys.modules[name], '__file__', None)
- print(path)
- if not path:
- raise AttributeError('module %s has not attribute __file__' % name)
- return os.path.dirname(os.path.abspath(path))
-
- def Judge_CH(content):
- for ch in content:
- if u'\u4e00' <= ch <= u'\u9fff':
- return True
- return False
-
- def translate(mes):
- #pass
- url = "https://cn.bing.com/ttranslatev3?isVertical=1&&IG=4A2FC6AC6B474D1AA4650B3473E31411&IID=trans"
- data={}
- data['text'] = mes
- data['fromLang'] = "auto-detect"
- #识别输入中是否有中文
- if(Judge_CH(mes)):
- data['to'] = "en"
- else:
- data['to'] = "zh-Hans"
- result = requests.post(url,data).json()
- #字典 列表各种嵌套
- result = result[0]['translations'][0]['text']
- return result
-
- def sendmes():
- content = entry.get()
- #当没有输入却点击发送的时候弹出警告
- if len(content) == 0:
- messagebox.showinfo(title='警告', message='你要输入文字才行哦!')
- return
- torboot = "我:"+content+"\n"
- scr.insert(END, torboot)
- entry.delete(0,'end')
- sendtoroot = translate(content)
- response = alice.respond(sendtoroot)
- print(sendtoroot)
- print(response)
- recvfromroot = "小岳:"+translate(response)+"\n"
- scr.insert(END,recvfromroot)
-
- #初始化窗口
- root = tk.Tk()
- enres = StringVar() #设置变量
- root.title("小岳陪你聊") #设置窗口标题
- root.minsize(320, 160 )
- root.maxsize(320, 160) #固定窗口大小
- root.geometry("250x150+800+450") #固定串口位置
-
- lable = Label(root,text="我:",font="微软雅黑")
- lable.grid(row=1,column=0)
- lable1 = Label(root,text="小岳:",font="微软雅黑")
- lable1.grid(row=0,column=0)#固定位置
-
- #设置输入框
- entry = Entry(root,font=("微软雅黑",10),width=28)
- entry.grid(row=1,column=1)#固定位置
-
- # 对话消息框设置成滚动文本框
- scrolW = 25 # 设置文本框的长度
- scrolH = 9 # 设置文本框的高度
- scr = scrolledtext.ScrolledText(root, width=scrolW, height=scrolH,wrap=tk.WORD)
- scr.grid(row=0,column=1)#固定位置
-
- #设置发送按钮,点击的时候去执行sendmes函数
- button = Button(root,text="发送",font=("微软雅黑",10),command=sendmes)
- button.grid(row=1,column=3,sticky=E)#固定位置
-
- #设置退出按钮,点击的时候退出程序
- button1 = Button(root,text="退出",font=("微软雅黑",10),command=root.quit)
- button1.grid(row=0,column=3,sticky=E)#固定位置
-
- #加载机器人ALICE
- alice_path = get_module_dir('aiml') + '\\botdata\\alice'
- os.chdir(alice_path) # 切换到语料库所在工作目录
- alice = aiml.Kernel() # 创建机器人alice对象
- alice.learn("startup.xml")
- alice.respond('LOAD ALICE')
-
- root.mainloop()

已经打包好了,需要的朋友关注公众号向作者索要安装包。
欢迎关注个人微信公众号:小岳杂货店,查看“原来黑科技这么简单”之全息投影。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。