Подтвердить что ты не робот

Как получить текущее текстовое содержимое 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)
4b9b3361

Ответ 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!'

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