[英]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.