2012-12-05 42 views
2

我正在用PyQt编写一个向导。在第一页上,我想让用户选择在两个选项之间选择两次。 因此我决定向Buttongroups做出决定。但是,尽管我将第一个两个单选按钮添加到第一个Buttongroup,其他两个单选按钮仍然是排他性的(我只能选择页面上的一个按钮)。一个窗口中有多个QButtonGroups

这里是我的代码:

# Setup UI 
    layout = QtGui.QVBoxLayout() 

    gBBackupFromIntExt = QtGui.QGroupBox() 
    layout.addWidget(gBBackupFromIntExt) 

    bGBackupFromIntExt = QtGui.QButtonGroup() 

    self.rBBackupFromExt = QtGui.QRadioButton() 
    bGBackupFromIntExt.addButton (self.rBBackupFromExt) 
    layout.addWidget(self.rBBackupFromExt) 

    self.rBBackupFromInt = QtGui.QRadioButton() 
    bGBackupFromIntExt.addButton (self.rBBackupFromInt) 
    layout.addWidget(self.rBBackupFromInt) 

    gBBackupToIntExt = QtGui.QGroupBox() 
    layout.addWidget(gBBackupToIntExt) 

    bGBackupToIntExt = QtGui.QButtonGroup() 

    self.rBBackupToExt = QtGui.QRadioButton() 
    bGBackupToIntExt.addButton (self.rBBackupToExt) 
    layout.addWidget(self.rBBackupToExt) 

    self.rBBackupToInt = QtGui.QRadioButton() 
    bGBackupToIntExt.addButton (self.rBBackupToInt) 
    layout.addWidget(self.rBBackupToInt) 

你有任何想法,是我的错误,我要改变什么?

回答

2

问题是,QButtonGroups从不成为层次结构的一部分,所以它们没有任何效果。

BTW:发布代码时尝试添加neccessary部分,使其可运行:

from PyQt4 import QtGui 
import sys 

class Test(QtGui.QWidget): 
    def __init__(self): 
     super().__init__() 
     layout = QtGui.QVBoxLayout(self) 

     gBBackupFromIntExt = QtGui.QGroupBox() 
     layout.addWidget(gBBackupFromIntExt) 

     bGBackupFromIntExt = QtGui.QButtonGroup(self) 

     self.rBBackupFromExt = QtGui.QRadioButton() 
     bGBackupFromIntExt.addButton(self.rBBackupFromExt) 
     layout.addWidget(self.rBBackupFromExt) 

     self.rBBackupFromInt = QtGui.QRadioButton() 
     bGBackupFromIntExt.addButton(self.rBBackupFromInt) 
     layout.addWidget(self.rBBackupFromInt) 

     gBBackupToIntExt = QtGui.QGroupBox() 
     layout.addWidget(gBBackupToIntExt) 

     bGBackupToIntExt = QtGui.QButtonGroup(self) 

     self.rBBackupToExt = QtGui.QRadioButton() 
     bGBackupToIntExt.addButton (self.rBBackupToExt) 
     layout.addWidget(self.rBBackupToExt) 

     self.rBBackupToInt = QtGui.QRadioButton() 
     bGBackupToIntExt.addButton (self.rBBackupToInt) 
     layout.addWidget(self.rBBackupToInt) 

a = QtGui.QApplication(sys.argv) 
t = Test() 
t.show() 
a.exec() 

这应该解决这个问题。

+1

非常感谢您的回答以及关于未来职位的信息,现在工作正常! 对于其他人:解决方法是在ButtonGroups的括号中添加“self”(即bGBackupToIntExt = QtGui.QButtonGroup(** self **) –