Agrupando botones de radio en PyQt

import sys from PyQt4 import QtCore, QtGui class Class1(QtGui.QMainWindow): def __init__(self): super(Class1, self).__init__() self.func() def func(self): r0=QtGui.QRadioButton("0",self) r1=QtGui.QRadioButton("1",self) ra=QtGui.QRadioButton("a",self) rb=QtGui.QRadioButton("b",self) r0.move(100,100) r1.move(400,100) ra.move(100,400) rb.move(400,400) number_layout=QtGui.QButtonGroup() letter_layout=QtGui.QButtonGroup() number_layout.addButton(r0) number_layout.addButton(r1) letter_layout.addButton(ra) letter_layout.addButton(rb) layout=QtGui.QHBoxLayout(self) self.show() def main(): app = QtGui.QApplication(sys.argv) mw = Class1() mw.show() sys.exit(app.exec_()) if __name__=='__main__': main() 

Estoy tratando de agrupar r0, r1 y ra, rb, es decir, cuando se marca r0, r1 debe estar desactivado sin efecto en los estados de ra o rb. ¿Cómo puedo conseguir esto? El código indica lo que he intentado hasta ahora.

Una QMainWindow proporciona un diseño, no puede simplemente reemplazarlo con el suyo. QWidget de un QWidget plano, o cree un nuevo widget y agregue el diseño y los botones a eso.

Tu nombre también es confuso, QButtonGroup no es un diseño. En realidad, no proporciona ninguna interfaz de usuario visible. Si necesita un elemento de IU que QGroupBox botones, debería mirar QGroupBox en QGroupBox lugar.

Aquí hay una variación simple de lo que tienes arriba:

 def func(self): layout=QtGui.QHBoxLayout() # layout for the central widget widget=QtGui.QWidget(self) # central widget widget.setLayout(layout) number_group=QtGui.QButtonGroup(widget) # Number group r0=QtGui.QRadioButton("0") number_group.addButton(r0) r1=QtGui.QRadioButton("1") number_group.addButton(r1) layout.addWidget(r0) layout.addWidget(r1) letter_group=QtGui.QButtonGroup(widget) # Letter group ra=QtGui.QRadioButton("a") letter_group.addButton(ra) rb=QtGui.QRadioButton("b") letter_group.addButton(rb) layout.addWidget(ra) layout.addWidget(rb) # assign the widget to the main window self.setCentralWidget(widget) self.show()