Python 如何从PyQt组合框中获取当前值

Python 如何从PyQt组合框中获取当前值,python,qt,pyqt,Python,Qt,Pyqt,我正在使用PyQt设计器,然后使用pyuic4对其进行转换。 我的ui文件具有如下组合框: self.comboBox = QtGui.QComboBox(self.groupBox_3) self.comboBox.setGeometry(QtCore.QRect(20, 30, 81, 22)) self.comboBox.setObjectName(_fromUtf8("comboBox")) self.comboBox.addItem(_fromUtf8(

我正在使用PyQt设计器,然后使用pyuic4对其进行转换。
我的ui文件具有如下组合框:

    self.comboBox = QtGui.QComboBox(self.groupBox_3)
    self.comboBox.setGeometry(QtCore.QRect(20, 30, 81, 22))
    self.comboBox.setObjectName(_fromUtf8("comboBox"))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
如您所见,我放在组合框中的文本不会显示在代码的这一部分中,但是它会显示在gui中

通常,当我有一些用户选择时,如单选按钮,我可以执行以下检查:

if self.RAnkle.isChecked():
我可以用输入文本做类似的事情。我试图用comboBox实现这个逻辑,就像我想说self.comboBox.getText()并返回用户选择的字符串一样。我试着做了一些项目,但我不能让它工作

例如,此代码:

self.comboBox.activated()  
返回此错误消息:

TypeError: native Qt signal is not callable
我还尝试使用itemData(),但仍然收到错误:

TypeError: QComboBox.itemData(int, int role=Qt.UserRole): not enough arguments
我在回调中执行此操作,因此我首先执行以下操作:

self.analyzeButton.clicked.connect(self._AnalyzeData)
然后在函数_AnalyzeData中,我试图获取当前组合框项的文本

那么,这可能吗


谢谢

好吧,关于你的错误,它们不是很容易解释吗?:-)

从您刚才链接的文档中:

无效激活(int)

这是此信号的默认过载。此信号在 用户在组合框中选择一项。已传递项的索引。 请注意,即使选择未更改,也会发送此信号。如果 你需要知道当选择实际改变时,使用信号 currentIndexChanged()

作为一个Qt信号,它不能直接被调用:它可以被发射,并且您可以创建一个插槽,当它发生时将被调用

QVariant QComboBox.itemData(self,int-index,int-role=Qt.UserRole)

返回中给定索引中给定角色的数据 组合框或QVariant。如果没有此角色的数据,则无效

另请参见setItemData()

role参数有一个默认值,因此您可以忽略它,但必须给出索引


很高兴你找到了解决方案

如果要调用
连接函数
中的
插槽
,并传递参数,则应使用lambda,例如:

QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), 
                               lambda: self.materialsInstance.setFilterDict_Insert("L",self,"name",self.lineEdit.text()))

所以问题的答案是.currentText(),但如果有人能解释错误的原因,那就太好了。好吧,我找到了一个解决方案,但实际上这不是我想要做的,我刚刚意识到这一点哈哈。我想说的是,如果我有一个带有值的组合框,我怎么能仅仅通过使用某个特定值的名称来查询它,或者我需要知道该名称的索引。