Как заставить QPushButton воспроизводить звук одновременно с добавлением текста в мой QLineEdit?

Я использую PyQt6. У меня есть QMainWindow с одним QPushButton и QLineEdit в виджете. Я хочу воспроизводить звук каждый раз, когда я нажимаю кнопку, и одновременно он добавляет текст в мою строку редактирования. Раньше я добивался такого эффекта, но есть задержка, когда воспроизводится звук и добавляется текст.

Я хочу убрать эту задержку. Я также обнаружил, что параметры QSound были еще в PyQt4, но их больше нет в PyQt6. Может есть альтернативы playsound?

Во всяком случае, вот мой код:

      import sys
from functools import cached_property, partial
from threading import Thread
from playsound import playsound
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import *

class Main(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Play Sound')
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        self.btn = QPushButton()
        self.lay = QHBoxLayout(central_widget)
        self.btn.setText('Play the Sound')
        self.lay.addWidget(self.btn)
        self.qline = QLineEdit()
        self.qline.setFixedHeight(35)
        self.lay.addWidget(self.qline)

        self.btn.clicked.connect(partial(self.buildExpression, 'X'))
        self.btn.clicked.connect(self.playsound)

    def line(self):
        return self.qline.text()
        
    def lineedit(self, text):
        self.qline.setText(text)
        self.qline.setFocus()

    def buildExpression(self, sub_exp):

        expression = self.line() + sub_exp
        self.lineedit(expression)

    def playsound(self):
        playsound('sound.mp3')

def background():
        while True:
            playsound('background.mp3')

def main():
    app = QApplication(sys.argv)
    run = Main()
    Thread(target=background, daemon=True).start()
    run.show()
    app.exec()

if __name__ == "__main__":
    main()

1 ответ

Выглядит как:

      playsound('sound.mp3', False)

сделали свое дело. Однако могут быть улучшения, если мы захотим снова запустить звук (при остановке первого) при повторном нажатии кнопки.

Другие вопросы по тегам