我写了一个类似于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
是否可以考虑启动一个线程播放音乐。
如果满意,请采纳,谢谢
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y