猫史档案馆


【Python作品分享】Chat_box【作品秀】

用户:Chen_ai108Chen_ai108查看:0 回复:2 评论:0 创建时间:2023-02-01T14:21:52


【作品展示】

center_image

 

【作品介绍】

Chat_box——与ai聊天纵享丝滑.

本作品基于百度unit的开放api(当然自己注册的)和pyside2进行开发.此版本为第一版,欢迎各位提提意见

本人第一次发帖,请多关照(*≧ω≦)

 

【作品源代码】

# encoding:utf-8
import requests
import random
from PySide2.QtWidgets import *
from PySide2.QtCore import *
from PySide2.QtWebEngineWidgets import QWebEngineView
from ui_ChatBox import Ui_ChatBox
from PySide2.QtMultimedia import QSound
import sys
import os

os.environ['QT_MAC_WANTS_LAYER'] = '1'


class Chatbox():
    def __init__(self):
        print("欢迎来和我聊天鸭(*≧ω≦)")
    def QandA(self,text):
        host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=ateBugRP7vyPl3bymgf8ctBC&client_secret=9xQuCVb5xeHX6MnnyeGOAU7Q9zGtEkAy'
        res = requests.get(host)
        access_token = eval(res.text)['access_token']
        url = 'https://aip.baidubce.com/rpc/2.0/unit/service/v3/chat?access_token=' + access_token
        user_id = 888888
        post_data =  "{\"version\":\"3.0\",\"service_id\":\"S80755\",\"session_id\":\"\",\"log_id\":\"%s\",\"request\":{\"terminal_id\":\"%s\",\"query\":\"%s\"}}"%(str(random.randint),str(user_id),str(text))
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        headers = {'Content-Type':'application/json'}
        response = requests.post(url, data=post_data.encode('utf-8'), headers=headers)
        response = response.json()
        response = response['result']['context']['SYS_PRESUMED_HIST'][1]
        if response:
            return response


class ChatWindow(QMainWindow,Ui_ChatBox):
    def __init__(self):
        super(ChatWindow,self).__init__()
        self.setupUi(self)
        self.init_set()
        self.show()
        self.chat = Chatbox()
        self.textEdit.setTextColor("green")
        self.textEdit.setText('欢迎来和我聊天鸭(*≧ω≦)')
        self.textEdit.setEnabled(False)
        self.sound = QSound("river.wav")
        self.sound.setLoops(QSound.Infinite)
        self.sound.play()
        self.setup()

    def init_set(self):
        self.broswer = QWebEngineView()
        self.vl_Layout.addWidget(self.broswer)
        self.broswer.load(QUrl.fromLocalFile(os.path.realpath("/Users/chenai/Desktop/新春比赛/树洞.html")))


    def setup(self):
        self.textEdit_2.installEventFilter(self)
        
    def eventFilter(self, widget, event):
        if event.type() == QEvent.KeyPress:
            if event.key() == Qt.Key_Return:

                self.text = self.textEdit_2.toPlainText()
                self.textEdit_2.clear()
                self.text = self.text.喵()

                self.textEdit.setTextColor("red")
                self.textEdit.append(self.text)

                if self.text == "":
                    self.textEdit.setTextColor("green")
                    self.textEdit.append("不得输入空字符")

                else:
                    #print(self.text)
                    self.answer=self.chat.QandA(self.text)
                    self.textEdit.setTextColor("green")
                    self.textEdit.append(self.answer)

        return QWidget.eventFilter(self, widget, event)



    

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = ChatWindow()
    sys.exit(app.exec_())

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
Chen_ai108Chen_ai108

这个“喵喵喵”的位置是api的url,大家去百度unit注册一个机器人就会获取到这个url.具体是哪条看官方教程就行emotion_编程猫_搓头
这里用的背景图片是个嵌入在html中的gif,想放mp4的同学可以把mp4文件转换成GIF,以下是html的代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>bgimg</title> 
<style> 
.tupian{ border:1px solid #000; width:300px; height:100px} 
.tupian img{width:422px; height:636px} 
</style> 
</head> 
 <body> 
<div class="tupian"> 
<img src="文件完整路径" /> 
</div> 
</body> 
</html>

点赞0


评论


Chen_ai108Chen_ai108

 

'''ChatBox UI文件'''



from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *


class Ui_ChatBox(object):
    def setupUi(self, ChatBox):
        if not ChatBox.objectName():
            ChatBox.setObjectName(u"ChatBox")
        ChatBox.resize(734, 626)
        ChatBox.setStyleSheet(u"background-color: rgb(255, 255,255);")
        self.centralwidget = QWidget(ChatBox)
        self.centralwidget.setObjectName(u"centralwidget")
        self.textEdit = QTextEdit(self.centralwidget)
        self.textEdit.setObjectName(u"textEdit")
        self.textEdit.setGeometry(QRect(430, 0, 291, 441))
        self.textEdit.setTabletTracking(True)
        self.textEdit.setStyleSheet(u"background-color: rgba(224, 222, 225,50);")
        self.textEdit.setReadOnly(True)
        self.textEdit_2 = QTextEdit(self.centralwidget)
        self.textEdit_2.setObjectName(u"textEdit_2")
        self.textEdit_2.setGeometry(QRect(430, 460, 291, 181))
        self.textEdit_2.setTabletTracking(True)
        self.textEdit_2.setStyleSheet(u"background-color: rgba(243, 241, 244,255);")
        self.textEdit_2.setAutoFormatting(QTextEdit.AutoNone)
        self.verticalLayoutWidget = QWidget(self.centralwidget)
        self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
        self.verticalLayoutWidget.setGeometry(QRect(0, 0, 431, 641))
        self.vl_Layout = QVBoxLayout(self.verticalLayoutWidget)
        self.vl_Layout.setObjectName(u"vl_Layout")
        self.vl_Layout.setContentsMargins(0, 0, 0, 0)
        ChatBox.setCentralWidget(self.centralwidget)

        self.retranslateUi(ChatBox)

        QMetaObject.connectSlotsByName(ChatBox)
    # setupUi

    def retranslateUi(self, ChatBox):
        ChatBox.setWindowTitle(QCoreApplication.translate("ChatBox", u"ChatBox(*^o^*)", None))
    # retranslateUi

点赞0


评论