ich habe eine PyQt5 Oberfläche erstellt und möchte mir damit meinen eigenen Dartzähler programmieren. Ich hatte die Idee, nicht jfür jede einzelne Punktzahl eine Funktion zu schreiben, sondern insgesamt nur eine Funktion zu schreiben und abhängig von der Punktzahl die Zahl hineinzugeben. Mein dargestellter Code ist nur ein Muster für die Punktzahl "20". Meine Frage: Warum funktioniert der Befehl "self.b_2.clicked.connect(self.abziehen(20))" nicht? Ich erhalte dann den Error: "TypeError: argument 1 has unexpected type 'int'".
Und die zweite Frage: was muss ich tun, damit es klappt und ich das für alle Punktzahlen anwenden kann.
Zur besseren Orientierung habe ich in die Zeilen, zu denen ich die Fragen habe an den Rand Emojis gemacht (diese sind nicht in meinem Programmcode enthalten).
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.punkte = 501
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(391, 215)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label_punkte = QtWidgets.QLabel(self.centralwidget)
self.label_punkte.setGeometry(QtCore.QRect(160, 10, 47, 13))
self.label_punkte.setObjectName("label_punkte")
self.b_1 = QtWidgets.QPushButton(self.centralwidget)
self.b_1.setGeometry(QtCore.QRect(140, 50, 75, 23))
self.b_1.setObjectName("b_1")
self.b_2 = QtWidgets.QPushButton(self.centralwidget)
self.b_2.setGeometry(QtCore.QRect(140, 90, 75, 23))
self.b_2.setObjectName("b_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 391, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.b_2.clicked.connect(self.abziehen(20))








self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_punkte.setText(_translate("MainWindow", "501"))
self.b_1.setText(_translate("MainWindow", "10"))
self.b_2.setText(_translate("MainWindow", "20"))
def abziehen(self,zahl):










self.punkte = self.punkte - zahl
self.label_punkte.setText(str(self.punkte))
return self.punkte
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())