非常抱歉,我之前的修改仍然存在问题。让我们再次尝试并进行修复。
以下是修改后的代码,请再次尝试:
from PySide6.QtWidgets import QComboBox
import pandas as pd
def setup_area_selection(comboboxes, data_model):
df = pd.read_excel(data_model)
comboboxes[0].clear()
comboboxes[0].addItems(df.loc[df['级别'] == 1, '名称'])
def handle_combobox_change(index):
current_combobox = comboboxes[index]
current_level = index + 1
selected_code = df.loc[df['名称'] == current_combobox.currentText(), '区划代码'].values[0]
if index < len(comboboxes) - 1:
next_combobox = comboboxes[index + 1]
next_level = current_level + 1
next_combobox.clear()
next_combobox.addItems(df.loc[df['区划代码'].str.startswith(selected_code) & (df['级别'] == next_level), '名称'])
for i in range(len(comboboxes)):
comboboxes[i].currentIndexChanged.connect(lambda index, i=i: handle_combobox_change(i))
请确保在调用 `setup_area_selection()` 函数时,传递正确的 `comboboxes` 对象和 `data_model` 路径。例如:
self.comboboxes = [self.comboBox, self.comboBox_2, self.comboBox_3, self.comboBox_4, self.comboBox_5]
self.data_model = "E:/Temp/行政区划代码库.xlsx"
self.setup_area_selection(self.comboboxes, self.data_model)
这样应该能够正确显示和更新所有级别的 `QComboBox` 数据,并根据用户的选择进行相应的联动更新。如果问题还未解决,请提供更多的报错信息以帮助我更好地理解问题所在。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |