Python 如何将项目添加到具有唯一Id的Qcombobox
您是否有任何想法将项目添加到Qcombobox中 当用户选择项目时,我们可以检索所选项目的唯一Id 假设我们有: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的列,但当其中一个项目被选中时,我
=============
| 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_())