web-dev-qa-db-fra.com

Comment obtenir le contenu actuel du texte d'une QComboBox?

En utilisant pyqt4 et python 2.6, j’utilise un qcombobox pour fournir une liste d’options. J'ai des problèmes pour utiliser l'option sélectionnée. J'ai pu utiliser un signal pour déclencher une méthode lorsque l'option est sélectionnée, mais le problème est que, lorsque l'utilisateur clique sur Exécuter, le contenu de plusieurs de ces listes déroulantes doit être pris en compte. Donc, fondamentalement, je dois obtenir le contenu sélectionné d’une liste déroulante sous forme de chaîne. Jusqu'à présent, j'ai seulement pu utiliser ceci:

print combobox1.currentText()

pour obtenir ceci:

PyQt4.QtCore.QString(u'Test Selection2')

quand tout ce que je veux vraiment, c’est le bit 'Sélection du test', des idées? ?__. Ma liste déroulante a été conçue comme ceci:

combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)
25
Ben

Vous pouvez convertir le type QString en chaîne python en utilisant simplement la fonction str En supposant que vous n'utilisez aucun caractère Unicode, vous pouvez obtenir une chaîne python Comme ci-dessous:

text = str(combobox1.currentText())

Si vous utilisez des caractères Unicode, vous pouvez faire:

text = unicode(combobox1.currentText())
52
sateesh

PyQt4 peut être obligé d'utiliser une nouvelle API dans laquelle QString est automatiquement converti vers et à partir d'un objet Python:

import sip
sip.setapi('QString', 2)

Avec cette API, la classe QtCore.QString n'est plus disponible et self.ui.comboBox.currentText() renverra une chaîne Python ou un objet Unicode.

Voir Sélection d'API incompatibles à partir de la doc.

3
Frodon

Obtenir le texte de ComboBox lorsque l'élément est modifié

     self.ui.comboBox.activated.connect(self.pass_Net_Adap)

  def pass_Net_Adap(self):
      print str(self.ui.comboBox.currentText())
1
Cholavendhan

Si vous voulez la valeur textuelle d'un objet QString, vous pouvez utiliser la propriété __str__, comme ceci:

>>> a = QtCore.QString("Happy Happy, Joy Joy!")
>>> a
PyQt4.QtCore.QString(u'Happy Happy, Joy Joy!')
>>> a.__str__()
u'Happy Happy, Joy Joy!'

J'espère que cela pourra aider.

0
Raceyman