Python 一个窗口中有多个QButtonGroup

Python 一个窗口中有多个QButtonGroup,python,radio-button,pyqt,radio-group,buttongroup,Python,Radio Button,Pyqt,Radio Group,Buttongroup,我正在用PyQt编写一个向导。在第一页,我想让用户在两个选项中选择两次。 因此,我决定做按钮组。但是,尽管我将前两个单选按钮添加到第一个Buttongroup,将另外两个添加到第二个Buttongroup,但这些按钮仍然是独占的(我只能在页面上选择一个按钮) 这是我的密码: # Setup UI layout = QtGui.QVBoxLayout() gBBackupFromIntExt = QtGui.QGroupBox() layout.addWidget

我正在用PyQt编写一个向导。在第一页,我想让用户在两个选项中选择两次。 因此,我决定做按钮组。但是,尽管我将前两个单选按钮添加到第一个Buttongroup,将另外两个添加到第二个Buttongroup,但这些按钮仍然是独占的(我只能在页面上选择一个按钮)

这是我的密码:

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

你知道我的错误在哪里吗?我必须改变什么吗?

问题是QButtonGroup从未成为层次结构的一部分,因此它们没有任何效果

顺便说一句:发布代码时,请尝试添加必要的部分以使其可运行:

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

这应该可以解决问题。

问题是QButtonGroup从来都不是层次结构的一部分,因此它们没有任何效果

顺便说一句:发布代码时,请尝试添加必要的部分以使其可运行:

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

这应该可以解决问题。

非常感谢您的回答和有关未来帖子的信息,现在它可以正常工作了!对于其他人:解决方案是在按钮组的括号中添加“self”(即bgbackuptinext=QtGui.QButtonGroup(self))非常感谢你的回答和关于未来帖子的信息,现在它工作正常了!对于其他人:解决方案是在按钮组的括号中添加“self”(即bgbackuptinext=QtGui.QButtonGroup(self)