|
发表于 2024-4-17 22:27:33
|
显示全部楼层
非常抱歉,我理解错了你的需求。以下是修改后的代码示例,它会存储所选省、市、县的名称:from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidgetfrom openpyxl import load_workbookdef create_cascading_combobox(excel_file): class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("行政区划") self.combo_province = QComboBox() self.combo_city = QComboBox() self.combo_county = QComboBox() self.selected_province_name = "" # 存储已选中省级选项的名称 self.selected_city_name = "" # 存储已选中市级选项的名称 self.selected_county_name = "" # 存储已选中县级选项的名称 layout = QVBoxLayout() layout.addWidget(self.combo_province) layout.addWidget(self.combo_city) layout.addWidget(self.combo_county) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) self.load_data(excel_file) self.init_comboboxes() self.combo_province.currentIndexChanged.connect(self.on_province_changed) self.combo_city.currentIndexChanged.connect(self.on_city_changed) self.combo_county.currentIndexChanged.connect(self.on_county_changed) def load_data(self, excel_file): wb = load_workbook(excel_file) ws = wb.active self.data_model = [] for row in ws.iter_rows(values_only=True): level, code, name = row if level == 1: self.data_model.append((code, name)) elif level == 2: self.data_model.append((code, name)) elif level == 3: self.data_model.append((code, name)) def init_comboboxes(self): self.combo_province.clear() self.combo_city.clear() self.combo_county.clear() self.combo_province.addItem("请选择省级") for _, name in self.data_model: self.combo_province.addItem(name) def on_province_changed(self, index): self.selected_province_name = self.combo_province.itemText(index) # 存储已选中省级选项的名称 # 清除之前选择的市级和县级选项 self.combo_city.clear() self.combo_county.clear() self.combo_city.addItem("请选择市级") self.combo_county.addItem("请选择县级") def on_city_changed(self, index): self.selected_city_name = self.combo_city.itemText(index) # 存储已选中市级选项的名称 # 清除之前选择的县级选项 self.combo_county.clear() self.combo_county.addItem("请选择县级") def on_county_changed(self, index): self.selected_county_name = self.combo_county.itemText(index) # 存储已选中县级选项的名称 app = QApplication() window = MainWindow() window.show() app.exec()create_cascading_combobox("行政区划.xlsx")现在,当选择省、市、县选项时,`self.selected_province_name`、`self.selected_city_name` 和 `self.selected_county_name` 变量中分别储存了对应的名称。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|