2013-09-27 4 views
8

Ho un elenco di dizionari:Come trovare un oggetto per nome in pyqt?

globalParams = [{'attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox'}, 
       {'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox'}] 

'Ctrl' - nome del controllo nella finestra Qt.

tipicamente, il codice è il seguente:

self.checkBoxEnabled.checkState() 

ma checkBoxEnabled è un oggetto. e ho solo un nome di stringa 'checkBoxEnabled' e non posso usarlo ...

come trovare un oggetto per nome in pyqt? qualcosa di simile a? autonomo. GetObjectByName ('checkBoxEnabled') .checkState()

risposta

14

È possibile utilizzare QObject::findChild metodo. In PyQt dovrebbe essere scritto in questo modo:

checkbox = self.findChild(QtGui.QCheckBox, "checkBoxEnabled") 

self dovrebbe essere un widget genitore della casella di controllo.