当你创建一个 `QComboBox` 时,你可以使用 `addItem` 方法为每个项设置显示文本和附加的数据。您已经通过调用 `addItem(name, code)` 将 `name` 显示在 `comboBox` 中,将 `code` 作为附加数据存储。
为了获取与选定 `name` 对应的 `code`,你可以使用 `QComboBox` 的 `itemData` 方法。以下是一个示例代码:
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QPushButton
class ComboBoxExample(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('ComboBox 示例')
layout = QVBoxLayout()
self.comboBox_5 = QComboBox()
self.load_data()
layout.addWidget(self.comboBox_5)
btn_get_code = QPushButton('获取选定项的代码')
btn_get_code.clicked.connect(self.get_selected_code)
layout.addWidget(btn_get_code)
self.setLayout(layout)
def load_data(self):
# 假设 comboBox5_data 是包含两列 'name' 和 'code' 的 DataFrame
comboBox5_data = [
{"name": "选项1", "code": "001"},
{"name": "选项2", "code": "002"},
{"name": "选项3", "code": "003"}
]
for index, row in enumerate(comboBox5_data):
name = row["name"]
code = row["code"]
self.comboBox_5.addItem(name, code)
def get_selected_code(self):
selected_index = self.comboBox_5.currentIndex()
selected_name = self.comboBox_5.itemText(selected_index)
selected_code = self.comboBox_5.itemData(selected_index)
print(f"选定项: {selected_name}, 代码: {selected_code}")
if __name__ == '__main__':
app = QApplication([])
window = ComboBoxExample()
window.show()
app.exec()
在这个例子中,`load_data` 方法模拟读取数据,并将每行数据添加到 `QComboBox` 中。在 `get_selected_code` 方法中,我们首先获取当前选择项的索引,然后使用 `itemText` 获取选定项的显示文本,使用 `itemData` 获取附加的数据(即对应的 `code`)。
你可以运行这个示例来验证代码的功能,希望这能帮助到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |