我想从2013年起每年动态创建radiobuttons。我已经创建了这些按钮,但我无法检查第一个radiobutton(2013)。为此,我使用QtGui.QRadioButton('2013').setChecked(True)
我不知道我错过了什么......
def dynamicaly_cratede_radiobtns(self):
current_year = datetime.today().year
self.button_group = QtGui.QButtonGroup()
for i in range(2013, current_year+1):
self.button_name = QtGui.QRadioButton("{}".format(i))
self.button_name.setObjectName("radiobtn_{}".format(i))
self.verticalLayout.addWidget(self.button_name)
self.button_group.addButton(self.button_name,i)
self.button_name.toggled.connect(self.subplot_year)
QtGui.QRadioButton('2013').setChecked(True)
def subplot_year(self):
print self.button_group.checkedId()
修改 我刚刚使用 if
解决了这个问题 for i in range(2013, current_year+1):
self.button_name = QtGui.QRadioButton("{}".format(i))
self.button_name.setObjectName("radiobtn_{}".format(i))
self.verticalLayout.addWidget(self.button_name)
self.button_group.addButton(self.button_name,i)
self.button_name.toggled.connect(self.subplot_year)
if i == 2013:
self.button_name.setChecked(True)
但无论如何,为什么原始方法不起作用?我认为这是更优雅的解决方案。
答案 0 :(得分:0)
QtGui.QRadioButton('2013').setChecked(True)
创建一个文本值为'2013'
的新单选按钮。这个被检查。
此单选按钮不是任何布局或无线电组的一部分,因此不会检查按钮。
您似乎认为单选按钮在某处缓存,可以使用文本值进行访问。但事实并非如此。
要解决此问题,您需要检查添加到布局中的其中一个按钮,就像在编辑中一样。