繁体   English   中英

如何从PyQt comboBox获取当前值

[英]How to get current value from PyQt comboBox

我正在使用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()并返回用户选择的字符串。 我尝试在这个http://pyqt.sourceforge.net/Docs/PyQt4/qcombobox.html做一些项目,但我不能让它工作。

例如,这段代码:

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内部我试图获取当前组合框项目的文本。

那么,这可能吗?

谢谢

那么,关于你的错误,他们不是很明显吗? :-)

从您刚刚链接的文档:

void activated(int)

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

作为Qt信号,它不能直接被调用:它可以被发射,你可以创建一个在它发生时被调用的槽。

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

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

另请参见setItemData()。

role参数有一个默认值,因此您可以省略它,但您必须提供索引。

很高兴你找到了解决方案!

如果你想在带有参数传递的connect function调用SLOT ,你应该使用lambda,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM