yyyyyyzj 2021-04-14 14:46 采纳率: 50%
浏览 45
已采纳

这是由于python的线程问题导致的原因嘛?

我写了一个类似于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

  • 写回答

4条回答 默认 最新

  • 关注

    是否可以考虑启动一个线程播放音乐。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal