单击单选按钮后,用户定义的插槽不会 运行
User defined slot doesn't run after radio button is clicked
单击 QGroupBox 中的单选按钮后,我无法让自定义槽工作。这是代码的相关部分 (PySide2)
class ChooseTarget(QtWidgets.QGroupBox):
def __init__(self, title=None):
super().__init__(title)
with open(definitions.JSON_PATH) as j_file:
names = json.load(j_file)
self.radios = [QtWidgets.QRadioButton(names['names'][i]) for i in range(11)]
self.radios[names['names'].index(names["lastTarget"])].setChecked(True)
self.layout = QtWidgets.QGridLayout()
self.button = QtWidgets.QPushButton("Ok")
self.styleButton()
self.addToLayout()
def addToLayout(self):
for i in range(11):
#adding radio buttons to grid layout
if i < 4:
self.layout.addWidget(self.radios[i],0,i)
elif i >= 4 and i < 8:
self.layout.addWidget(self.radios[i],1, i - 4)
else:
self.layout.addWidget(self.radios[i],2, i - 8)
self.radios[i].clicked.connect(self.handleClick)
self.layout.addWidget(self.button,2,3)
handleclick 现在只是一个带有打印的方法,我验证它在单击单选按钮时不会运行。我也尝试过使用 @Slot 装饰器,或者使用 SIGNAL 和 SLOT 宏连接发送方和接收方的替代方法。
编辑:
MainWidget class 是我在main.
中显示的那个
class MainWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.mTableOfOils)
self.layout.addWidget(self.text)
self.mRadioButtons = ChooseTarget("Choose the target")
self.layout.addLayout(self.mRadioButtons.layout)
self.setLayout(self.layout)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MainWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
在 MainWidget 中 class 我只添加了 QGroupBox 的布局,但没有将单选按钮小部件添加到主布局,现在它按预期工作了
单击 QGroupBox 中的单选按钮后,我无法让自定义槽工作。这是代码的相关部分 (PySide2)
class ChooseTarget(QtWidgets.QGroupBox):
def __init__(self, title=None):
super().__init__(title)
with open(definitions.JSON_PATH) as j_file:
names = json.load(j_file)
self.radios = [QtWidgets.QRadioButton(names['names'][i]) for i in range(11)]
self.radios[names['names'].index(names["lastTarget"])].setChecked(True)
self.layout = QtWidgets.QGridLayout()
self.button = QtWidgets.QPushButton("Ok")
self.styleButton()
self.addToLayout()
def addToLayout(self):
for i in range(11):
#adding radio buttons to grid layout
if i < 4:
self.layout.addWidget(self.radios[i],0,i)
elif i >= 4 and i < 8:
self.layout.addWidget(self.radios[i],1, i - 4)
else:
self.layout.addWidget(self.radios[i],2, i - 8)
self.radios[i].clicked.connect(self.handleClick)
self.layout.addWidget(self.button,2,3)
handleclick 现在只是一个带有打印的方法,我验证它在单击单选按钮时不会运行。我也尝试过使用 @Slot 装饰器,或者使用 SIGNAL 和 SLOT 宏连接发送方和接收方的替代方法。
编辑: MainWidget class 是我在main.
中显示的那个class MainWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.mTableOfOils)
self.layout.addWidget(self.text)
self.mRadioButtons = ChooseTarget("Choose the target")
self.layout.addLayout(self.mRadioButtons.layout)
self.setLayout(self.layout)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MainWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
在 MainWidget 中 class 我只添加了 QGroupBox 的布局,但没有将单选按钮小部件添加到主布局,现在它按预期工作了