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)
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())
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.
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())
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.