|

楼主 |
发表于 2024-5-9 11:53:58
|
显示全部楼层
我现在代码是这样的:
def setup_area_selection(self, comboboxes, data_model):
levels = len(comboboxes)
data_model = pd.read_excel(self.Region_file)
df = pd.DataFrame(data_model)
def handle_combobox_changed(index):
combobox = comboboxes[index]
current_level = index + 1
selected_code = ''
# 获取上一级选择的区划代码
if index > 0:
previous_combobox = comboboxes[index - 1]
print('222previous_combobox:', previous_combobox)
selected_code = previous_combobox.currentData()
print('333selected_code:', selected_code)
# 根据当前级别和区划代码进行筛选
if selected_code:
code_length = (index + 1) * 2
print('444code_length:', code_length)
filtered_data = df[df['区划代码'].astype(str).str[:code_length] == str(selected_code)[:code_length]]
print('555filtered_data:', filtered_data)
else:
filtered_data = df[df['级别'] == current_level]
# 更新当前级别的 QComboBox
combobox.clear()
combobox.addItem("请选择")
for index, row in filtered_data.iterrows():
name = row['名称']
code = row['区划代码']
combobox.addItem(name, code)
print('666name, code:', name, code)
for i, combobox in enumerate(comboboxes):
combobox.currentIndexChanged.connect(lambda index, i=i: handle_combobox_changed(i))
# 设置其他初始化设置
combobox.setEditable(False)
combobox.setCurrentIndex(0)
# 手动触发第一个下拉框的选择事件
handle_combobox_changed(0)
然后报错:
Traceback (most recent call last):
File "D:\PycharmProjects\pythonProject\Ylqx20240509\Ylqx2024050901.py", line 1159, in <lambda>
combobox.currentIndexChanged.connect(lambda index, i=i: handle_combobox_changed(i))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\pythonProject\Ylqx20240509\Ylqx2024050901.py", line 1147, in handle_combobox_changed
filtered_data = df[df['级别'] == current_level]
^^^^^^^^^^^^^^^^^^^^^^^^^ |
|