¿Cómo se obtiene el contenido actual de un QComboBox?


Usando pyqt4 y python 2.6, estoy usando un qcombobox para proporcionar una lista de opciones. estoy teniendo problemas con el uso de la opción seleccionada. he podido usar una señal para activar un método cuando se selecciona la opción, pero el problema es que cuando los clics de uso ejecutan el contenido de varias de estas comboboxes deben tenerse en cuenta. así que básicamente necesito obtener el contenido seleccionado de un combobox como una cadena. hasta ahora solo he podido usar esto:

print combobox1.currentText()

Para obtener esto:

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

Cuando todo lo que realmente quiero es el bit de 'Selección de prueba', ¿alguna idea? mi cuadro combinado se hizo así:

combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)
Author: Ben, 2011-05-19

4 answers

Puede convertir el tipo QString a cadena python simplemente usando el str función. Suponiendo que no está utilizando ningún carácter Unicode, puede obtener un python cadena de la siguiente manera:

text = str(combobox1.currentText())

Si está utilizando cualquier carácter unicode, puede hacer:

text = unicode(combobox1.currentText())
 50
Author: sateesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-14 17:26:49

PyQt4 puede ser forzado a usar una nueva API en la que QString se convierte automáticamente a y desde un objeto Python:

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

Con esta API, la clase QtCore.QString ya no está disponible y self.ui.comboBox.currentText() devolverá una cadena de Python o un objeto unicode.

Consulte Seleccionando API incompatibles en el documento.

 3
Author: Frodon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-14 13:59:07

Obtener el texto de ComboBox cuando se cambia el elemento

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

  def pass_Net_Adap(self):
      print str(self.ui.comboBox.currentText())
 1
Author: Cholavendhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-14 16:12:28

Si desea el valor de texto de un objeto QString, puede usar la propiedad __str__, así:

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

Espero que eso ayude.

 0
Author: Raceyman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-19 17:43:31