首页 > 编程语言 >Python小项目:利用tkinter与图灵机器人制作智能聊天系统

Python小项目:利用tkinter与图灵机器人制作智能聊天系统

时间:2023-08-17 19:31:39浏览次数:35  
标签:tkinter Python text self 图灵 msglist grid frame left

在这里插入图片描述

1 前言

在本项目中,我们将探索如何使用Python的tkinter库以及图灵机器人API来构建一个智能聊天系统。本项目的初衷是通过实际操作,结合GUI编程和API调用,展示如何创建一个有趣且实用的小应用。我们将借助tkinter创建一个类似QQ聊天框的界面,并使用图灵机器人的API来实现自动化的智能聊天功能。 具体效果如下(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函数中,将apikey 换的换成自己的!

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()

最后再次展示一下界面图: 在这里插入图片描述

4 结语

在本次项目中,我们成功地利用Python的tkinter库与图灵机器人API打造了一个智能聊天系统。通过实际操作,我们学习了如何创建一个简洁美观的聊天界面,实现与机器人的智能互动。这个小项目不仅让我们掌握了GUI编程和API调用的技巧,还为我们提供了一个实际的应用场景,展示了如何将编程知识用于解决实际问题。通过进一步优化和拓展,我们可以将这个聊天系统变得更加强大和多样化,为用户带来更好的体验。在学习的过程中,我们也能够更深入地理解图灵机器人的工作原理和使用方法。无论是作为学习实践还是为了开发有趣的小工具,这个项目都是一个很好的起点,希望你能够通过这个项目获得更多的编程经验和乐趣!

在这里插入图片描述

标签:tkinter,Python,text,self,图灵,msglist,grid,frame,left
From: https://blog.51cto.com/u_15229916/7126937

相关文章

  • python rasa聊天机器人教程四:action查询今天是星期几
    1.修改nlm.yml添加意图-intent:ask_dayexamples:|-今天是星期几?-今天星期几?-现在是星期几?2.修改domain.ymlintents里面增加intents:-ask_day actions里面增加actions:-action_get_day 3.修改rules.yml-rule:respondtoday......
  • 【python基础】repr函数
     描述repr()函数将对象转化为供解释器读取的形式。语法以下是repr()方法的语法:repr(object)参数object--对象。返回值返回一个对象的string格式。实例#coding=UTF-8s="物品\t单价\t数量\n包子\t1\t2"print(s)print(repr(s))output:物品单价......
  • 必备Python代码
    Python是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性。如果读者对基本的Python语法已经有一些了解,那么这篇文章可能会给你一些启发。1.重复元素判定以下方法可以检查给定列表是不是存在重复元素,它会使用set()函数来移除所有重复元素。defall_unique(lst):......
  • Python3 函数
    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的......
  • 转载:python装饰器解析
    原文链接:https://www.cnblogs.com/songyunjie/p/16825830.html这里修正原文代码中的部分错误,调试的python版本为:3.9.161、什么是装饰器?Python的装饰器本质上是一个嵌套函数,它接受被装饰的函数(func)作为参数,并返回一个包装过的函数。这样我们可以在不改变被装饰函数的代码的情况下......
  • Python学习日记 2023年8月17日
    今天有点懒啊,做的东西少了点importosimportjiebaimportwordcloudimportimageio#pho=imageio.imread('7848.jpg')f=open('口红.txt')txt=f.read()txt_list=jieba.lcut(txt)string=''.join(txt_list)wc=wordcloud.WordCloud(......
  • Python分享之requests(3)
    6)身份验证基本身份认证(HTTPBasicAuth)importrequestsfromrequests.authimportHTTPBasicAuthr=requests.get('https://httpbin.org/hidden-basic-auth/user/passwd',auth=HTTPBasicAuth('user','passwd'))#r=requests.get('http......
  • 你能发现这段 Python 代码中的 bug 吗?
    点击链接了解详情【CSDN编者按】大家一起来找Bug。原文链接:https://dwrodri.gitlab.io/can-you-spot-the-bug-in-this-python-code/本文已获作者授权,未经允许,禁止转载!作者|DerekRodriguez译者|弯月责编|夏萌出品|CSDN(ID:CSDNnews)最近,在解析文本时,我遇到了一个......
  • Python爬虫初探
    title:Python爬虫初探date:2023-08-0116:16:51categories:CTF-Web入门description:爬取吉大贴吧前十页帖子标题终于到了基础知识的最后一节,python写爬虫程序。Python写简单爬虫主要是两个模块,requests和re,下面分别介绍一下这两个模块。requests模块初探请求模块,用来......
  • python项目 如何快速的导入和导出依赖包
    Python项目依赖包【导出】第一步:安装pipreqs包pip3installpipreqs第二步骤:进入项目的根目录执行以下命令:cd根目录第三步:转成requirements.ext文件:pipreqs./--encoding=utf-8--force如果成功,就会在根目录下生成一个requirements.txt文件,内容为本项目环境以来包已经对......