我写了一个类似于AI聊天机器人的小程序,目前还是写死的状态。目的就是当用户输入“我好难过”的时候机器人可以给出反馈并播放音乐来舒缓用户的内心状况,全部代码如下:
import sys
from pygame import mixer
from time import sleep
import random
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QListWidget
from PyQt5.QtWidgets import QListWidgetItem
def music_play():
mixer.init() # 初始化混音器模块
soft_music = ['music\CMJ - 告白之夜(纯音乐).mp3',
'music\CMJ - 久石让-千与千寻(纯音乐).mp3',
'music\磯村由紀子 - 風の住む街.mp3']
music_ready = random.choice(soft_music)
mixer.music.load(music_ready)
mixer.music.play() # 开始播放音乐流
sleep(120) # 控制音乐播放时间
mixer.music.stop()
def send_massage():
QListWidgetItem(QIcon("user.jpg"), send_Editor.text(), chat_area)
if send_Editor.text() == "我好难过":
QListWidgetItem(QIcon("胖丁.jpg"), "不要难过啦主人,小胖丁给你播放一首愉快的轻音乐吧~", chat_area)
music_play()
send_Editor.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
my_win = QWidget()
my_win.resize(500,600)
my_win.setWindowTitle("抗抑郁症聊天机器人")
# 发送按钮
send_Button = QPushButton("发送",my_win)
send_Button.setGeometry(390,560,100,30)
send_Button.clicked.connect(send_massage)
send_Button.setStyleSheet("border:2px groove gray;border-radius:10px;padding:2px 4px;")
# 编辑框
send_Editor = QLineEdit(my_win)
send_Editor.setGeometry(10,560,360,30)
# 消息区域
chat_area = QListWidget(my_win)
chat_area.setGeometry(10,10,480,540)
#chat_area.setStyleSheet("border-image:url(background.jpg)")
QListWidgetItem(QIcon("胖丁.jpg"),"你好主人,我是小胖丁,是你的开心果~( ˘ ³˘ )", chat_area)
my_win.show()
sys.exit(app.exec_())
但我发现,当我输入了“我好难受”以后,会先运行pygame库的播放音频函数,聊天的页面就会卡住不能继续打字,直到音频播放完了才能继续说话,请问该怎么解决这种情况。好难过 TvT