我在单击 QtWidgets.QPushButton 以显示 QtWidgets.QComboBox 中的 itemData 时遇到问题.我用这段代码填充我的 ComboBox:
I have a problem when I clicked in a QtWidgets.QPushButton to show the itemData from a QtWidgets.QComboBox. I fill my ComboBox with this code:
self.comboBox.addItem("Sandro",1)
self.comboBox.addItem("Daniel",2)
self.comboBox.addItem("Pedro",3)
它填充了 QtWidgets.QComboBox,但是当我设置 QtWidgets.QPushButton 时出现问题.我在 setupUi 中添加了这个:
It filled the QtWidgets.QComboBox, however the problem appears when I set the QtWidgets.QPushButton. I added this in the setupUi:
self.pushButton.clicked.connect(self.showId)
最后开发了函数showId:
And finally developed the function showId:
id_us = self.comboBox.itemData(self.comboBox.currentIndex())
print('VAL ',id_us)
当我点击我的按钮时,窗口关闭了,这是什么问题?我分享了我的 accessForm.py 的所有代码:
When I clicked my button, the windows closes, What was the problem? I share all the code of my accessForm.py:
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(598, 245)
self.groupBox = QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(10, 20, 541, 201))
self.groupBox.setObjectName("groupBox")
self.pushButton = QtWidgets.QPushButton(self.groupBox)
self.pushButton.setGeometry(QtCore.QRect(50, 150, 75, 23))
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(40, 30, 47, 13))
self.label.setObjectName("label")
self.comboBox = QtWidgets.QComboBox(self.groupBox)
self.comboBox.setGeometry(QtCore.QRect(110, 30, 111, 22))
self.comboBox.setObjectName("comboBox")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.fillCombo()
self.pushButton.clicked.connect(self.showId)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.groupBox.setTitle(_translate("Form", "Datos"))
self.pushButton.setText(_translate("Form", "Inicio"))
self.label.setText(_translate("Form", "TextLabel"))
def showId(self):
id_us = self.comboBox.itemData(self.comboBox.currentIndex()).toPyObject()
print('VAL ',id_us)
def fillCombo(self):
self.comboBox.addItem("Sandro",1)
self.comboBox.addItem("Daniel",2)
self.comboBox.addItem("Pedro",3)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
提前致谢.
在我看来,您使用的是过时的教程,在 PyQt4 中,您必须使用 toPyObject() 将 PyQt 对象转换为 python 本机对象 方法,但在 PyQt5 中不再需要:
It seems to me that you are using an outdated tutorial, in PyQt4 you had to convert the PyQt object to python native object using the toPyObject() method, but in PyQt5 it is no longer necessary:
def showId(self):
id_us = self.comboBox.itemData(self.comboBox.currentIndex()) # .toPyObject()
print('VAL ',id_us)
作为建议,它使用终端或 CMD 来获取错误消息,因为 IDE 在处理 PyQt 错误消息方面存在问题.
As a recommendation, it uses the terminal or CMD to obtain the error messages since the IDEs have problems with handling the PyQt error messages.
这篇关于如何从 qcombobox 获取 itemdata?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
如何将函数绑定到 Qt 菜单栏中的操作?How to bind a function to an Action from Qt menubar?(如何将函数绑定到 Qt 菜单栏中的操作?)
PyQt 启动后进度跃升至 100%PyQt progress jumps to 100% after it starts(PyQt 启动后进度跃升至 100%)
如何将 yaxis 刻度标签设置在固定位置,以便当我How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何将 yaxis 刻度标签设
`QImage` 构造函数有未知关键字 `data``QImage` constructor has unknown keyword `data`(`QImage` 构造函数有未知关键字 `data`)
将 x 轴刻度更改为自定义字符串Change x-axis ticks to custom strings(将 x 轴刻度更改为自定义字符串)
如何在python中将文件保存为excel时显示进度条?How to show progress bar while saving file to excel in python?(如何在python中将文件保存为excel时显示进度条?)