How can I get itemdata from qcombobox?(如何从 qcombobox 获取 itemdata?)
问题描述
我在单击 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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何从 qcombobox 获取 itemdata?
基础教程推荐
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 筛选NumPy数组 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01