用 Python 实现聊天机器人(tkinter+urllib)

会有一股神秘感。 提交于 2020-02-03 01:46:19

这篇文章将使用 Python 的 urllib 模块 和 tkinter 模块实现一个聊天机器人。

本程序使用的模块有:

import tkinter
from tkinter import*
from tkinter.colorchooser import askcolor
from tkinter import messagebox
from tkinter import scrolledtext
import urllib.request
import urllib.parse

 

聊天机器人设置

本程序使用了茉莉聊天机器人,通过爬虫爬取回复。

茉莉聊天机器人可以自己申请,申请链接:http://www.itpk.cn/  申请过程本文不作介绍。

如不想申请,可以用本文的

1.对发送信息进行设置

首先要对发送的信息进行转换,否则无法打开网页,无法爬取。转换方式很简单,如下:

urllib.parse.quote_plus(string)

2.爬取网页

已知茉莉聊天机器人的请求格式如下:

http://i.itpk.cn/api.php?api_key= 申请的ApiKey &api_secret= 密码 &question= 问题

所以,爬虫代码为:

urllib.request.urlopen("http://i.itpk.cn/api.php?api_key=ac00db995a4a8f2a3f3623c82f3cc9d9&api_secret=anaoutswrz1y&question=" + urllib.parse.quote_plus(string)).read().decode("utf-8")

注意:由于网页编码为 utf-8 ,所以要对其解码。

 

tkinter 窗口设置

tkinter 窗口就不多说了,上代码:

root=Tk()
root.geometry('800x500')
root.title("聊天机器人")
textEdit=scrolledtext.ScrolledText(root,bd=data["message"]["bd"],font=data["message"]["font"],height=1)
textEdit.pack(expand=YES,fill=BOTH)
textEdit.config(state='disabled')
question=Entry(root,bd=data["question"]["bd"],font=data["question"]["font"])
question.pack(fill=BOTH)
send=Button(root,text='发送',command=go,bd=4,font=("华文新魏",18))
send.pack(anchor=SE)

menu = Menu(root)
root.config(menu = menu)
bot = Menu(menu)
bot.add_command(label='程序信息', command=about)
bot.add_command(label='帮助', command=helper)
menu.add_cascade(label= '关于', menu = bot)
    
root.mainloop()

 

函数

这里有一些功能函数,代码:

try:
    #核心函数,爬虫爬取回复
    def chat(string):
        import urllib.request
        import urllib.parse
        return urllib.request.urlopen("http://i.itpk.cn/api.php?api_key=ac00db995a4a8f2a3f3623c82f3cc9d9&api_secret=anaoutswrz1y&question=" + urllib.parse.quote_plus(string)).read().decode("utf-8")
    #关于
    def about():
        messagebox.showinfo('关于聊天机器人','开发者:***\n开发日期:**** 年 ** 月')
    #主函数
    def go():
        q=question.get()
        question.delete(0, END)
        if q.replace(" ","")=="":
        	messagebox.showwarning('警告',"不能发送空白信息!")
        	return
        textEdit.config(state='normal')
        textEdit.insert(END,"我:"+q+"\n")
        textEdit.insert(END,"茉莉:"+chat(q)+"\n")
        textEdit.see(END)
        textEdit.config(state='disabled')
    #帮助
    def helper():
        messagebox.showinfo('关于聊天机器人','使用说明:\n1.在底下的发送框输入信息;\n2.点击“发送”按钮发送消息;\n3.聊天机器人回复。\n\n注意事项:\n1.程序不能回车发送\n2.使用时请连接网络\n3.回复个别问题可能出现乱码,请见谅')
else:
    pass

 

完整代码

以上就是全部内容了,如需下载源代码请点击此处

(https://download.csdn.net/download/weixin_45462161/12131279)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!