Как получить текущее текстовое содержимое QComboBox?
используя pyqt4 и python 2.6, я использую qcombobox для предоставления списка опций. У меня проблемы с использованием выбранного варианта. я смог использовать сигнал для запуска метода при выборе опции, но проблема заключается в том, что при использовании щелчков мыши использование нескольких из этих списков должно быть учтено. поэтому в основном мне нужно получить выбранное содержимое combobox в виде строки. до сих пор я только мог использовать это:
print combobox1.currentText()
чтобы получить следующее:
PyQt4.QtCore.QString(u'Test Selection2')
когда все, что я действительно хочу, это бит "Test Selection", любые идеи?
мой поле со списком было сделано следующим образом:
combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)
Ответы
Ответ 1
Вы можете преобразовать тип QString в строку python, просто используя str
функция. Предполагая, что вы не используете символы Unicode, вы можете получить python
строка, как показано ниже:
text = str(combobox1.currentText())
Если вы используете символы юникода, вы можете:
text = unicode(combobox1.currentText())
Ответ 2
PyQt4 может быть вынужден использовать новый API, в котором QString автоматически преобразуется в объект Python и из него:
import sip
sip.setapi('QString', 2)
С помощью этого API класс QtCore.QString
больше не доступен, а self.ui.comboBox.currentText()
возвращает строку Python или unicode.
См. Выбор несовместимых API из документа.
Ответ 3
Получение текста ComboBox при изменении элемента
self.ui.comboBox.activated.connect(self.pass_Net_Adap)
def pass_Net_Adap(self):
print str(self.ui.comboBox.currentText())
Ответ 4
Если вам нужно текстовое значение объекта 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!'
Надеюсь, что это поможет.