PyQt4动态创建radiobuttons并默认检查

时间:2016-02-26 11:56:39

标签: python pyqt radio-button pyqt4

我想从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)

但无论如何,为什么原始方法不起作用?我认为这是更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

QtGui.QRadioButton('2013').setChecked(True)

创建一个文本值为'2013'的新单选按钮。这个被检查。

此单选按钮不是任何布局或无线电组的一部分,因此不会检查按钮。

您似乎认为单选按钮在某处缓存,可以使用文本值进行访问。但事实并非如此。

要解决此问题,您需要检查添加到布局中的其中一个按钮,就像在编辑中一样。