2013-02-10 5 views
1
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() 

Je suis en train de groupe r0, r1 et ra, rb à savoir quand r0 est cochée, r1 doit être décochée sans effet sur les états de ra ou rb. Comment puis-je atteindre cet objectif? Le code indique ce que j'ai essayé jusqu'à présent.boutons radio groupant dans PyQt

Répondre

8

Un QMainWindow fournit déjà une mise en page, vous ne pouvez pas simplement le remplacer par le vôtre. Soit hériter d'une plaine QWidget, ou créer un nouveau widget et ajouter la disposition et les boutons à cela.

Votre nom est confus aussi, QButtonGroup n'est pas une mise en page. Il ne fournit pas d'interface utilisateur visible. Si vous avez besoin d'un élément d'interface utilisateur qui regroupe les boutons, vous devriez plutôt regarder QGroupBox.

est ici une simple variation sur ce que vous avez ci-dessus:

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

Bonjour. Désolé pour resurrectind 3 ans de réponse, mais pouvez-vous s'il vous plaît ajouter un exemple comment utiliser QGroupBox aussi? Je ne peux trouver aucun exemple avec QGroupBox et la documentation est difficile à comprendre –

+0

@ KarelBílek yeh, moi aussi. – chwi