Python基于Tkinter、爬虫和AIML写了个小机器人聊天软件

开始学习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()

已经打包好了,需要的朋友关注公众号向作者索要安装包。

欢迎关注个人微信公众号:小岳杂货店,查看“原来黑科技这么简单”之全息投影。

                                                             

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值