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 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题