2016-02-26 101 views
0

我想從2013年開始每年動態創建單選按鈕。我已經創建了這些按鈕,但我無法檢查第一個單選按鈕(2013)。要做到這一點,我使用QtGui.QRadioButton('2013').setChecked(True)PyQt4動態創建單選按鈕和默認檢查

我不知道我錯過了什麼?

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() 

編輯 我只是解決它通過使用如果

 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
QtGui.QRadioButton('2013').setChecked(True) 

創建一個文本值爲'2013'的新單選按鈕。這個被檢查。

此單選按鈕不是任何佈局或廣播組的一部分,因此不檢查按鈕。

看起來好像你認爲單選按鈕被緩存在某處並且可以用文本值訪問。但這種情況並非如此。

要解決此問題,您需要檢查您添加到佈局中的某個按鈕,就像您在編輯時所做的那樣。