如何使用其唯一 ID 将项目添加到 Qcombobox
how to add items to Qcombobox with its unique Id
您有什么想法可以将项目添加到 Qcombobox 中吗?
当用户选择项目时,我们可以检索所选项目的唯一ID吗?
假设我们有:
=============
| ID | NAME |
=============
| 1 | A |
=============
| 2 | B |
=============
| 3 | C |
=============
| 4 | D |
=============
并且我们只想在 QCombobox 中显示 NAME 的列,但是当其中一项被选中时,我们可以访问所选项目的 ID。
你只需要使用一个模型,在一个角色中设置 ID,在另一个角色中设置 NAME,在下一部分中我将展示一个示例:
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_())
您有什么想法可以将项目添加到 Qcombobox 中吗?
当用户选择项目时,我们可以检索所选项目的唯一ID吗?
假设我们有:
=============
| ID | NAME |
=============
| 1 | A |
=============
| 2 | B |
=============
| 3 | C |
=============
| 4 | D |
=============
并且我们只想在 QCombobox 中显示 NAME 的列,但是当其中一项被选中时,我们可以访问所选项目的 ID。
你只需要使用一个模型,在一个角色中设置 ID,在另一个角色中设置 NAME,在下一部分中我将展示一个示例:
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_())