用 Python 實現聊天機器人(tkinter+urllib)

這篇文章將使用 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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章