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条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)