Как вы получаете текущее текстовое содержимое QComboBox? - PullRequest
27 голосов
/ 19 мая 2011

Используя pyqt4 и python 2.6, я использую qcombobox для предоставления списка опций. У меня проблемы с использованием выбранной опции. Я был в состоянии использовать сигнал для запуска метода, когда выбран параметр, но проблема в том, что когда пользователь нажимает кнопку «Выполнить», необходимо учитывать содержимое некоторых из этих комбинированных списков. Поэтому в основном мне нужно получить выделенное содержимое поля со списком в виде строки. До сих пор я только мог использовать это:

print combobox1.currentText()

чтобы получить это:

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

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

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

Ответы [ 4 ]

54 голосов
/ 19 мая 2011

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

text = str(combobox1.currentText())

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

text = unicode(combobox1.currentText())
3 голосов
/ 14 апреля 2015

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

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

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

См. Выбор несовместимых API из документа.

1 голос
/ 14 марта 2012

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

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

  def pass_Net_Adap(self):
      print str(self.ui.comboBox.currentText())
0 голосов
/ 19 мая 2011

Если вам нужно текстовое значение объекта 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!'

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

...