你如何获得QComboBox的当前文本内容?

时间:2011-05-19 16:37:25

标签: python pyqt pyqt4 python-2.6 qcombobox

使用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 个答案:

答案 0 :(得分:52)

只需使用str即可将QString类型转换为python字符串 功能。假设您没有使用任何Unicode字符,您可以获得python 字符串如下:

text = str(combobox1.currentText())

如果您使用任何unicode字符,则可以执行以下操作:

text = unicode(combobox1.currentText())

答案 1 :(得分:3)

可以强制PyQt4使用一个新的API,其中QString自动转换为Python对象和从Python对象转换:

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

使用此API,QtCore.QString类不再可用,self.ui.comboBox.currentText()将返回Python字符串或unicode对象。

请参阅文档中的Selecting Incompatible APIs

答案 2 :(得分:1)

在项目更改时获取ComboBox的文本

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

  def pass_Net_Adap(self):
      print str(self.ui.comboBox.currentText())

答案 3 :(得分:0)

如果您想要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!'

希望有所帮助。