2011-05-19 489 views
18

使用pyqt4和python 2.6,我使用qcombobox来提供选项列表。我在使用所选选项时遇到问题。当选择该选项时,我已经能够使用信号来触发方法,但问题是,当使用点击运行时,需要考虑这些组合框中的几个的内容。所以基本上我需要获得一个组合框的选定内容作为一个字符串。迄今为止,我只能够使用这样的:如何获取QComboBox的当前文本内容?

print combobox1.currentText() 

得到这个:

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

当我真正想要的是“测试选择”位,任何想法? 我的组合框作出这样的:

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

回答

40

只需使用str 函数即可将QString类型转换为python字符串。假如你不使用任何Unicode字符,你可以得到如下蟒蛇 字符串:

text = str(combobox1.currentText()) 

如果您正在使用的任何Unicode字符,你可以这样做:

text = unicode(combobox1.currentText()) 
+0

多数民众赞成在完美!这正是我需要做的。我现在正在考虑更改组合框中的选定项目,而无需单击它。我试过.setItemText(“文本选择”),但是这给了我以下错误:TypeError:QComboBox.setItemText(int,QString):参数1有意想不到的类型'str'我不知道它是期待什么类型,或者这是最好的方式去做。我只需要将所选项目更改为列表中的其中一个选项。 – Ben 2011-05-24 16:55:04

+0

setItemText的第一个参数是QComboBox中要更改其值的项目的索引。看看Qt文档http://doc.qt.nokia.com/4.7-snapshot/qcombobox.html#setItemText。您需要参考API文档编写,以熟悉可用的方法,其签名等。 – sateesh 2011-05-24 17:26:51

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!' 

希望有所帮助。

1

获取组合框时的文本的项目被改变

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

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

PyQt4的可被迫使用一个新的API中的QString被自动转换到和从一个Python对象:

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

有了这个API,QtCore.QString类不再可用,self.ui.comboBox.currentText()将返回一个Python字符串或Unicode对象。

请参阅文档Selecting Incompatible APIs