我使用Qt Designer编写了一个简单的答题器,并将功能附加到按钮上。
最近我想将播放声音绑定到相同的按钮。
绑在一起,但是当你点击按钮时,程序立即结束。
我不明白怎么了。声音是使用库来播放的winsound。
from PyQt5 import QtCore, QtGui, QtWidgets
import webbrowser
import sys
import winsound
cl = 0
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setGeometry(800, 360, 250, 250)
MainWindow.setFixedSize(250, 250)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.author = QtWidgets.QPushButton(self.centralwidget)
self.author.setGeometry(QtCore.QRect(160, 0, 89, 23))
self.author.setMaximumSize(QtCore.QSize(91, 23))
self.author.setAutoFillBackground(False)
self.author.setStyleSheet("font: 8pt \"Algerian\";")
self.author.setAutoRepeat(False)
self.author.setAutoExclusive(False)
self.author.setFlat(True)
self.author.setObjectName("author")
self.clicks = QtWidgets.QLabel(self.centralwidget)
self.clicks.setGeometry(QtCore.QRect(40, 10, 191, 111))
font = QtGui.QFont()
font.setFamily("Biff")
font.setPointSize(20)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
self.clicks.setFont(font)
self.clicks.setStyleSheet("color: rgb(25, 170, 0);\n"
"font: 20pt \"Biff\";")
self.clicks.setObjectName("clicks")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(60, 100, 131, 111))
self.pushButton.setStyleSheet("background-color: rgb(255, 0, 0);")
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.add_func()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Кликер 2.0"))
self.author.setText(_translate("MainWindow", "fanat skiLLa1"))
self.clicks.setText(_translate("MainWindow", "CLICKS: 0"))
def add_func(self):
self.author.clicked.connect(self.url)
self.pushButton.clicked.connect(self.clickess)
def url(self):
webbrowser.open('https://vk.com/idbat9cs16', new=2) # Открытие вкладки в браузере
def clickess(self):
winsound.PlaySound('Sounds/btn_sound.wav', False) # Проигрывание звука нажатия кнопки
global cl
cl += 1 # Счётчик кликов
self.clicks.setText(f'CLICKS: {cl}')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我还附加了单击按钮时发生的错误(更准确地说,这不是错误,但仍然可能会有所帮助):
C:\python\python.exe "D:\python\clicker2.0.py"
进程已完成,退出代码为 -1073740791 (0xC0000409)
尽管您的代码对我来说没有错误,但我会给您一些建议:
永远不要更改 Qt Designer 生成的代码。
创建另一个从相应小部件继承的类,并使用生成的类来填充它。
为了获得真正的错误,我建议在终端/CMD 中执行脚本,因为许多 IDE 不处理 Qt 异常。
不建议滥用全局变量,如《为什么全局变量是邪恶的?》中所述。
主要.py