it-swarm.com.de

Wie erhalten Sie den aktuellen Textinhalt einer QComboBox?

Mit pyqt4 und python 2.6 verwende ich eine qcombobox, um eine Liste von Optionen bereitzustellen. Ich habe Probleme mit der ausgewählten Option. Ich konnte ein Signal verwenden, um eine Methode auszulösen, wenn die Option ausgewählt ist. Das Problem besteht jedoch darin, dass beim Klicken der Schaltfläche Ausführen der Inhalt einiger dieser Kombinationsfelder berücksichtigt werden muss. Grundsätzlich muss ich den ausgewählten Inhalt einer Combobox als String erhalten. Bisher konnte ich dies nur nutzen:

print combobox1.currentText()

um das zu bekommen:

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

wenn ich wirklich nur das 'Test Selection'-Bit möchte, irgendwelche Ideen? Mein Kombinationsfeld wurde folgendermaßen erstellt:

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

Sie können den QString-Typ in Python-Zeichenfolge konvertieren, indem Sie einfach die str -Funktion verwenden. Angenommen, Sie verwenden keine Unicode-Zeichen, können Sie eine Python-Zeichenfolge (String) wie folgt erhalten:

text = str(combobox1.currentText())

Wenn Sie Unicode-Zeichen verwenden, können Sie Folgendes tun:

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

PyQt4 kann gezwungen werden, eine neue API zu verwenden, in der QString automatisch in und aus einem Python-Objekt konvertiert wird:

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

Mit dieser API ist die Klasse QtCore.QString nicht mehr verfügbar und self.ui.comboBox.currentText() gibt eine Python-Zeichenfolge oder ein Unicode-Objekt zurück.

Siehe Auswahl inkompatibler APIs aus dem Dokument.

3
Frodon

Abrufen des Textes der ComboBox, wenn das Element geändert wird

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

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

Wenn Sie den Textwert eines QString-Objekts haben möchten, können Sie die __str__-Eigenschaft wie folgt verwenden:

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

Hoffentlich hilft das.

0
Raceyman