Comment obtenez-vous le contenu du texte actuel D'un QComboBox?

En utilisant pyqt4 et python 2.6, j'utilise un qcombobox pour fournir une liste d'options. j'ai des problèmes avec l'utilisation de 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 les clics d'utilisation exécutent le contenu de plusieurs de ces comboboxes doivent être pris en compte. donc, fondamentalement, j'ai besoin d'obtenir le contenu sélectionné d'une liste déroulante en tant que chaîne. jusqu'à présent, je n'ai pu utiliser ceci:

print combobox1.currentText()

Pour obtenir ce:

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

Quand tout ce que je veux vraiment, c'est le bit 'Test Selection', des idées? ma boîte combo a été faite comme ceci:

combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)
24
demandé sur Ben 2011-05-19 20:37:24

4 réponses

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

text = str(combobox1.currentText())

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

text = unicode(combobox1.currentText())
50
répondu sateesh 2015-04-14 17:26:49

PyQt4 peut être forcé d'utiliser une nouvelle API dans laquelle QString est automatiquement converti vers et depuis 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() renvoie une chaîne Python ou un objet unicode.

Voir Sélection des API incompatibles dans le document.

3
répondu Frodon 2015-04-14 13:59:07

Obtenir le texte de la liste déroulante 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
répondu Cholavendhan 2012-03-14 16:12:28

Si vous voulez la valeur de texte 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 ça aide.

0
répondu Raceyman 2011-05-19 17:43:31