Не работает isChecked()
Не вызывается isCheked() на радиобаттоны.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(332, 337)
self.radioButton = QtWidgets.QRadioButton()
self.radioButton.setGeometry(QtCore.QRect(30, 30, 82, 17))
self.radioButton.setObjectName("radioButton")
self.buttonGroup = QtWidgets.QButtonGroup(Dialog)
self.buttonGroup.setObjectName("buttonGroup")
self.buttonGroup.addButton(self.radioButton)
self.radioButton_2 = QtWidgets.QRadioButton(Dialog)
self.radioButton_2.setGeometry(QtCore.QRect(120, 30, 82, 17))
self.radioButton_2.setObjectName("radioButton_2")
self.buttonGroup.addButton(self.radioButton_2)
self.radioButton_3 = QtWidgets.QRadioButton(Dialog)
self.radioButton_3.setGeometry(QtCore.QRect(210, 30, 82, 17))
self.radioButton_3.setObjectName("radioButton_3")
self.buttonGroup.addButton(self.radioButton_3)
self.radioButton_4 = QtWidgets.QRadioButton(Dialog)
self.radioButton_4.setGeometry(QtCore.QRect(20, 60, 82, 17))
self.radioButton_4.setObjectName("radioButton_4")
self.buttonGroup_2 = QtWidgets.QButtonGroup(Dialog)
self.buttonGroup_2.setObjectName("buttonGroup_2")
self.buttonGroup_2.addButton(self.radioButton_4)
self.radioButton_5 = QtWidgets.QRadioButton(Dialog)
self.radioButton_5.setGeometry(QtCore.QRect(120, 60, 82, 17))
self.radioButton_5.setObjectName("radioButton_5")
self.buttonGroup_2.addButton(self.radioButton_5)
self.radioButton_6 = QtWidgets.QRadioButton(Dialog)
self.radioButton_6.setGeometry(QtCore.QRect(220, 60, 82, 17))
self.radioButton_6.setObjectName("radioButton_6")
self.buttonGroup_2.addButton(self.radioButton_6)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(210, 210, 47, 13))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(110, 200, 75, 23))
self.pushButton.setObjectName("pushButton")
self.add_functions()
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.radioButton.setText(_translate("Dialog", "2"))
self.radioButton_2.setText(_translate("Dialog", "3"))
self.radioButton_3.setText(_translate("Dialog", "5"))
self.radioButton_4.setText(_translate("Dialog", "1"))
self.radioButton_5.setText(_translate("Dialog", "4"))
self.radioButton_6.setText(_translate("Dialog", "6"))
self.label.setText(_translate("Dialog", "TextLabel"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
def add_functions(self):
self.pushButton.clicked.connect(self.clicked)
def clicked(self):
radioBtn = Dialog.sender()
if radioBtn.isChecked():
# ???
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(332, 337)
self.radioButton = QtWidgets.QRadioButton()
self.radioButton.setGeometry(QtCore.QRect(30, 30, 82, 17))
self.radioButton.setObjectName("radioButton")
self.buttonGroup = QtWidgets.QButtonGroup(Dialog)
self.buttonGroup.setObjectName("buttonGroup")
self.buttonGroup.addButton(self.radioButton)
self.radioButton_2 = QtWidgets.QRadioButton(Dialog)
self.radioButton_2.setGeometry(QtCore.QRect(120, 30, 82, 17))
self.radioButton_2.setObjectName("radioButton_2")
self.buttonGroup.addButton(self.radioButton_2)
self.radioButton_3 = QtWidgets.QRadioButton(Dialog)
self.radioButton_3.setGeometry(QtCore.QRect(210, 30, 82, 17))
self.radioButton_3.setObjectName("radioButton_3")
self.buttonGroup.addButton(self.radioButton_3)
self.radioButton_4 = QtWidgets.QRadioButton(Dialog)
self.radioButton_4.setGeometry(QtCore.QRect(20, 60, 82, 17))
self.radioButton_4.setObjectName("radioButton_4")
self.buttonGroup_2 = QtWidgets.QButtonGroup(Dialog)
self.buttonGroup_2.setObjectName("buttonGroup_2")
self.buttonGroup_2.addButton(self.radioButton_4)
self.radioButton_5 = QtWidgets.QRadioButton(Dialog)
self.radioButton_5.setGeometry(QtCore.QRect(120, 60, 82, 17))
self.radioButton_5.setObjectName("radioButton_5")
self.buttonGroup_2.addButton(self.radioButton_5)
self.radioButton_6 = QtWidgets.QRadioButton(Dialog)
self.radioButton_6.setGeometry(QtCore.QRect(220, 60, 82, 17))
self.radioButton_6.setObjectName("radioButton_6")
self.buttonGroup_2.addButton(self.radioButton_6)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(210, 210, 47, 13))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(110, 200, 75, 23))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.radioButton.setText(_translate("Dialog", "2"))
self.radioButton_2.setText(_translate("Dialog", "3"))
self.radioButton_3.setText(_translate("Dialog", "5"))
self.radioButton_4.setText(_translate("Dialog", "1"))
self.radioButton_5.setText(_translate("Dialog", "4"))
self.radioButton_6.setText(_translate("Dialog", "6"))
self.label.setText(_translate("Dialog", "TextLabel"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class MainWindow(QtWidgets.QDialog, Ui_Dialog):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.clicked)
self.radioButtons = self.findChildren(QtWidgets.QRadioButton)
def clicked(self):
for rb in self.radioButtons:
if rb.isChecked():
print(f'{rb.text()} --> {rb.isChecked()}') #
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
