在此代码示例中:
from PyQt4.QtGui import QDialog, QPushButton, QRadioButton, QHBoxLayout, QApplication, QButtonGroup
import sys
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent=None)
button = QPushButton('Button')
self.radiobutton1 = QRadioButton('1')
self.radiobutton2 = QRadioButton('2')
#self.group = QButtonGroup()
#self.group.addButton(self.radiobutton1)
#self.group.addButton(self.radiobutton2)
#self.group.setExclusive(False)
layout = QHBoxLayout()
layout.addWidget(button)
layout.addWidget(self.radiobutton1)
layout.addWidget(self.radiobutton2)
self.setLayout(layout)
button.clicked.connect(self.my_method)
def my_method(self):
self.radiobutton1.setChecked(False)
self.radiobutton2.setChecked(False)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
当按钮点击时,我希望选中的radioButton被取消选中,但这永远不会发生。 如果我取消注释行并运行代码,那么我可以取消选中radioButtons。 但另一个问题出现了。 因为该组不是排他性的,所以我可以设置两个radioButtons和一些不能发生的事情。
当一次只能选择一个按钮时,我应该怎么做才能打开按钮?
对于任何想要简单解决这个非常烦人的问题的人,请将每个按钮连接到控制其他按钮
CheckState
的CheckState
。只需将您想要的按钮列表添加到
QButtonGroup
中,获取按钮列表,检查sender
不是同一个按钮,并取消选中其他按钮。假设你在一个循环中实例化你的按钮,你可以很容易地实现这一点: