Как вы получаете текущее текстовое содержимое 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!'
надеюсь, что это поможет.