PyQt4 动态创建单选按钮和默认检查
PyQt4 Dynamically created radiobuttons and default checking
我想为从 2013 年开始的每一年动态创建单选按钮。我已经创建了这些按钮,但我无法检查第一个单选按钮 (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)
但是不管怎样,为什么原来的方法不管用呢?我认为这是更优雅的解决方案。
QtGui.QRadioButton('2013').setChecked(True)
创建文本值为 '2013'
的新单选按钮。这个被检查了。
此单选按钮不属于任何布局或单选组,因此未选中任何按钮。
您似乎认为单选按钮缓存在某处并且可以使用文本值访问。但事实并非如此。
要解决此问题,您需要像在编辑中一样检查添加到布局的按钮之一。
我想为从 2013 年开始的每一年动态创建单选按钮。我已经创建了这些按钮,但我无法检查第一个单选按钮 (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)
但是不管怎样,为什么原来的方法不管用呢?我认为这是更优雅的解决方案。
QtGui.QRadioButton('2013').setChecked(True)
创建文本值为 '2013'
的新单选按钮。这个被检查了。
此单选按钮不属于任何布局或单选组,因此未选中任何按钮。
您似乎认为单选按钮缓存在某处并且可以使用文本值访问。但事实并非如此。
要解决此问题,您需要像在编辑中一样检查添加到布局的按钮之一。