Как вы получаете текущее текстовое содержимое QComboBox?

используя pyqt4 и python 2.6, я использую qcombobox для предоставления списка опций. у меня возникли проблемы с использованием выбранной опции. я смог использовать сигнал для запуска метода, когда выбрана опция, но проблема в том, что при использовании кликов необходимо учитывать содержимое нескольких из этих комбо-боксов. поэтому в основном мне нужно получить выбранное содержимое combobox в виде строки. до сих пор я мог использовать только это:

print combobox1.currentText()

в получите это:

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

когда все, что я действительно хочу, это бит "тестовый выбор", есть идеи? мой комбо-бокс был сделан так:

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

4 ответов


вы можете преобразовать тип QString в строку python, просто используя str функция. Предполагая, что вы не используете символы Unicode, вы можете получить python строка, как показано ниже:

text = str(combobox1.currentText())

Если вы используете любые символы юникода, вы можете сделать:

text = unicode(combobox1.currentText())

PyQt4 можно заставить использовать новый API, в котором QString автоматически преобразуется в объект Python и из него:

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

С помощью этого API QtCore.QString класс больше не доступен и self.ui.comboBox.currentText() вернет строку Python или объект unicode.

посмотреть Выбор Несовместимых API из дока.


получение текста ComboBox при изменении элемента

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

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

Если вы хотите текстовое значение объекта QString, вы можете использовать __str__ свойство, например:

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

надеюсь, что это поможет.