2009-11-18 8 views
2

Je développe un projet pour un client, où le design a un bouton radio avec des options exclusives.Qt Python radiobutton: activer événement

Voici un morceau de code qui fonctionne et montre deux boutons radio agréable:

self.performGroupBox = QtGui.QGroupBox(self.centralwidget) 
    self.performGroupBox.setGeometry(QtCore.QRect(50, 20, 181, 121)) 
    self.performGroupBox.setObjectName("performGroupBox")  

    self.consultRadioButton = QtGui.QRadioButton(self.performGroupBox) 
    self.consultRadioButton.setGeometry(QtCore.QRect(40, 30, 84, 18)) 
    self.consultRadioButton.setObjectName("consultRadioButton") 

    self.insertRadioButton = QtGui.QRadioButton(self.performGroupBox) 
    self.insertRadioButton.setGeometry(QtCore.QRect(40, 60, 84, 18)) 
    self.insertRadioButton.setObjectName("insertRadioButton") 

il ressemble:

perform: 
    () Consult 
    () Insert 

Le point ici est, comment savoir quel choix était marqué: "consultRadioButton" ou "insertRadioButton"?

Voici un échantillon à essayer d'obtenir ces informations:

if self.consultRadioButton.isChecked(): 
     self.call_Consult() 
    if self.insertRadioButton.isChecked(): 
     self.call_Insert() 

Mais il n'a rien fait lorsque le bouton radio est choisi.

Sinon, en utilisant la connexion devrait être une autre option:

QtCore.QObject.connect(self.consultRadioButton, QtCore.SIGNAL("currentIndexChanged(QString)"), self.call_Consult) 
    QtCore.QObject.connect(self.insertRadioButton, QtCore.SIGNAL("currentIndexChanged(QString)"), self.call_Insert) 

Mais ça ne fonctionnait pas non plus.

Qu'est-ce qui manque ici ... Des suggestions?

Tous les commentaires sont les bienvenus et appréciés.

Répondre

0

Voici la solution ... maintenant travailler:

QtCore.QObject.connect(self.radioButton1,QtCore.SIGNAL("toggled(bool)"),self.radio_activateInput) 

quand ont la paramètre bool incl mis en drapeau, il a fonctionné.

+3

piobyz vous a donné le nom du bon signal - et vous vous êtes répété et vous lui avez refusé la grosse coche verte? Homme froid. C'est froid. –

+0

@Brandon Rhodes - La réponse de piobyz n'était pas complète, car il a seulement mentionné toggled (bool). Mais merci d'avoir attiré mon attention, donc je lui ai juste donné la grosse coche verte, comme vous pouvez vérifier ici - s'il y a autre chose qui vous dérange, faites le moi savoir: http://stackoverflow.com/questions/1753939/qt -python-radiobutton-activate-event – ThreaderSlash

+0

Non, il n'y a rien d'autre qui me dérange! Et merci de fournir ces informations supplémentaires, en montrant comment la réponse de @ piobyz apparaît lors de l'appel 'connect()'. Merci de l'avoir remercié, et bonne chance dans votre futur travail sur Stack Overflow! –

0

Jetez un oeil à la classe QButtonGroup

0
# Assuming 'self' is a QtGui object 
self.consultRadioButton = QtGui.QRadioButton('Consult') 
# I prefer layout managers, but that is another topic 
self.consultRadioButton.setGeometry(QtCore.QRect(40, 30, 84, 18)) 
self.consultRadioButton.setObjectName("consultRadioButton") 

self.insertRadioButton = QtGui.QRadioButton('Insert') 
self.insertRadioButton.setGeometry(QtCore.QRect(40, 60, 84, 18)) 
self.insertRadioButton.setObjectName("insertRadioButton") 

# Set Default 
self.consultRadioButton.setChecked(True) 

# Create a Group and make it exclusive 
self.methodGrp.setExclusive(True) 

# Add radio buttons to group 
self.methodGrp.addButton(self.consultRadioButton) 
self.methodGrp.addButton(self.insertRadioButton) 

# Connect Event handlers 
self.consultRadioButton.clicked.connect(self.callConsult) 
self.insertRadioButton.clicked.connect(self.callInsert)