Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将项目添加到具有唯一Id的Qcombobox_Python_Python 3.x_Pyqt_Pyqt5_Qcombobox - Fatal编程技术网

Python 如何将项目添加到具有唯一Id的Qcombobox

Python 如何将项目添加到具有唯一Id的Qcombobox,python,python-3.x,pyqt,pyqt5,qcombobox,Python,Python 3.x,Pyqt,Pyqt5,Qcombobox,您是否有任何想法将项目添加到Qcombobox中 当用户选择项目时,我们可以检索所选项目的唯一Id 假设我们有: ============= | ID | NAME | ============= | 1 | A | ============= | 2 | B | ============= | 3 | C | ============= | 4 | D | ============= 我们只想在QCombobox中显示NAME的列,但当其中一个项目被选中时,我

您是否有任何想法将项目添加到Qcombobox中

当用户选择项目时,我们可以检索所选项目的唯一Id

假设我们有:

=============
| ID | NAME |
=============
| 1  |   A  |
=============
| 2  |   B  |
=============
| 3  |   C  |
=============
| 4  |   D  |
=============

我们只想在QCombobox中显示NAME的列,但当其中一个项目被选中时,我们可以访问所选项目的ID。

您只需使用一个模型,在一个角色中设置ID,在另一个角色中设置名称,在下一部分中我将展示一个示例:

from PyQt5 import QtCore, QtGui, QtWidgets


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)


    data =  [(1, "A"), (2, "B"), (3, "C"), (4, "D")]
    model = QtGui.QStandardItemModel()
    for i, text in data:
        it = QtGui.QStandardItem(text)
        it.setData(i)
        model.appendRow(it)

    @QtCore.pyqtSlot(int)
    def on_currentIndexChanged(row):
        it = model.item(row)
        _id = it.data()
        name = it.text()
        print("selected name: ",name, ", id:", _id)

    w = QtWidgets.QComboBox()
    w.currentIndexChanged[int].connect(on_currentIndexChanged)
    w.setModel(model)
    w.show()
    sys.exit(app.exec_())