【Python】利用tkinter与图灵机器人制作智能聊天系统

简介: 【Python】利用tkinter与图灵机器人制作智能聊天系统

1 前言


一次偶然的机会,我了解到图灵机器人网站,里面有现成的智能机器人聊天API。正好当时在学tkinter,计划利用tkinter制作一个类似QQ聊天框,与机器人聊天~

具体效果如下(ps:由于在网站的免费额度用完了,这里返回的是“请求次数超限制”):

图灵机器人网站链接:图灵机器人网站

首先需要注册登录,然后点击下图中的“创建机器人”,根据自己的需要创建~

创建完成后,会出现创建数据,其中有apikey!


2 代码分模块讲解


2.1 导入相应的库


首先需要导入相应的库,涉及到tkinter、datetime、time、requests、json等~


from tkinter import *
import datetime
import time
import requests,json
from tkinter import scrolledtext

2.2 创建机器人对象


机器人对象实际上是通过request请求访问图灵机器人API!

def computer(self, inquant):
        userid = 99        #检查一下自己的userid
        apikey = ''        #这里输入自己的apikey
        startup = ''
        while True:
            question = inquant
            tulingdata1 = json.dumps({
                "perception": {
                    "inputText": {
                        "text": question  # 将你输入的对话封装成一个字典,再转换成字符串,传给图灵机器人语义系统
                    },
                },
                "userInfo": {
                    "apiKey": apikey,  # 与图灵语义系统联系
                    "userId": userid
                }
            })
            robot1 = requests.post('http://openapi.tuling123.com/openapi/api/v2', tulingdata1)  # 因为是人机对话,所以通过post传递信息
            jsrobot1 = json.loads(robot1.text)['results'][0]['values']['text']  # 返回图灵机器人的对话
            return jsrobot1+'\n'

2.3 创建信息交互过程对象


这里实际上是将发送信息与接收信息的过程进行封装,方便之后的调用。同时使用了时间库,使聊天更加的真实!

def sendmessage(self, text_msglist, text_msg):
        msgcontent = '我:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, msgcontent, 'green')
        text_msglist.insert(END, text_msg.get('0.0', END))
        computertent = '图灵机器人:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, computertent, 'green')
        computer_talk = text_msg.get('0.0', END)
        text_msglist.insert(END, (self.computer(computer_talk)))
        text_msg.delete('0.0', END)


2.4 页面创建对象


通过grid来布局tkinter组件使页面更加的美观

def createPage(self):
        self.frame_left_top = Frame(width=600, height=220, bg='white')
        self.frame_left_center = Frame(width=600, height=100, bg='white')
        self.frame_left_bottom = Frame(width=600, height=20)
        ##创建需要的几个元素
        text_msglist = scrolledtext.ScrolledText(self.frame_left_top)
        text_msg = Text(self.frame_left_center)
        button_sendmsg = Button(self.frame_left_bottom, text='发送', command=lambda: self.sendmessage(text_msglist, text_msg))
        # 创建一个绿色的tag
        text_msglist.tag_config('green', foreground='#008B00')
        # 使用grid设置各个容器位置
        self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
        self.frame_left_center.grid(row=1, pady=5)
        self.frame_left_bottom.grid(row=2, column=0)
        self.frame_left_top.grid_propagate(0)
        self.frame_left_center.grid_propagate(0)
        self.frame_left_bottom.grid_propagate(0)
        # 把元素填充进frame
        text_msglist.grid()
        text_msg.grid()
        button_sendmsg.grid(row=0, column=0, sticky=E)

3 整体代码展示(可直接使用!)


ps:在computer函数中,将改换的换成自己的!

from tkinter import *
import datetime
import time
import requests,json
from tkinter import scrolledtext
class talk(object):
    def __init__(self, master=None):
        self.root = master  # 定义内部变量root
        self.createPage()
    def computer(self, inquant):
        userid = 99
        apikey = ''   #换成自己的apikey
        startup = ''
        while True:
            question = inquant
            tulingdata1 = json.dumps({
                "perception": {
                    "inputText": {
                        "text": question  # 将你输入的对话封装成一个字典,再转换成字符串,传给图灵机器人语义系统
                    },
                },
                "userInfo": {
                    "apiKey": apikey,  # 与图灵语义系统联系
                    "userId": userid
                }
            })
            robot1 = requests.post('http://openapi.tuling123.com/openapi/api/v2', tulingdata1)  # 因为是人机对话,所以通过post传递信息
            jsrobot1 = json.loads(robot1.text)['results'][0]['values']['text']  # 返回图灵机器人的对话
            return jsrobot1+'\n'
    def sendmessage(self, text_msglist, text_msg):
        msgcontent = '我:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, msgcontent, 'green')
        text_msglist.insert(END, text_msg.get('0.0', END))
        computertent = '图灵机器人:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, computertent, 'green')
        computer_talk = text_msg.get('0.0', END)
        text_msglist.insert(END, (self.computer(computer_talk)))
        text_msg.delete('0.0', END)
    def createPage(self):
        self.frame_left_top = Frame(width=600, height=220, bg='white')
        self.frame_left_center = Frame(width=600, height=100, bg='white')
        self.frame_left_bottom = Frame(width=600, height=20)
        ##创建需要的几个元素
        text_msglist = scrolledtext.ScrolledText(self.frame_left_top)
        text_msg = Text(self.frame_left_center)
        button_sendmsg = Button(self.frame_left_bottom, text='发送', command=lambda: self.sendmessage(text_msglist, text_msg))
        # 创建一个绿色的tag
        text_msglist.tag_config('green', foreground='#008B00')
        # 使用grid设置各个容器位置
        self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
        self.frame_left_center.grid(row=1, pady=5)
        self.frame_left_bottom.grid(row=2, column=0)
        self.frame_left_top.grid_propagate(0)
        self.frame_left_center.grid_propagate(0)
        self.frame_left_bottom.grid_propagate(0)
        # 把元素填充进frame
        text_msglist.grid()
        text_msg.grid()
        button_sendmsg.grid(row=0, column=0, sticky=E)
if __name__ == "__main__":
    root = Tk()
    root.title('图灵机器人聊天')
    talk(root)
    root.mainloop()

最后再次展示一下界面图:

相关文章
|
2月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
2月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
2月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
2月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
3月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
3月前
|
数据采集 自动驾驶 机器人
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
244 1

推荐镜像

更多