用户:
Chen_ai108查看:0 回复:2 评论:0 创建时间:2023-02-01T14:21:52
【作品展示】

【作品介绍】
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
Chen_ai108这个“喵喵喵”的位置是api的url,大家去百度unit注册一个机器人就会获取到这个url.具体是哪条看官方教程就行
这里用的背景图片是个嵌入在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_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
评论