根据你提供的代码,我注意到有几个地方可能引发了“Python已停止工作”的错误。请尝试按照以下方式进行修改:
1. 检查导入的模块是否正确,确保需要的库已经正确安装。
2. 检查 `self.Region_file` 的路径是否正确,并确保文件存在。
3. 在 `handle_combobox_changed()` 函数中,将 `comboboxes` 修改为 `combobox`,并删除 `current_level` 变量。因为在函数内部使用了 `enumerate(comboboxes)`,所以你只需要使用一个 `combobox` 变量即可。
4. 在 `filtered_data = df[df.astype(str).str == str(selected_code)]` 这一行之前,添加一个判断条件,确认 `selected_code` 不为空才进行筛选。
修改后的代码如下所示:
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, i):
combobox = comboboxes[index]
selected_code = ''
# 获取上一级选择的区划代码
if index > 0:
previous_combobox = comboboxes[index - 1]
selected_code = previous_combobox.currentData()
# 根据当前级别和区划代码进行筛选
if selected_code:
code_length = (index + 1) * 2
filtered_data = df[df.astype(str).str[:code_length] == str(selected_code)]
else:
filtered_data = df[df == (index + 1)]
# 更新当前级别的 QComboBox
combobox.clear()
combobox.addItem("请选择")
for index, row in filtered_data.iterrows():
name = row
code = row
combobox.addItem(name, code)
for i, combobox in enumerate(comboboxes):
combobox.currentIndexChanged.connect(functools.partial(handle_combobox_changed, i))
# 设置其他初始化设置
combobox.setEditable(False)
combobox.setCurrentIndex(0)
# 手动触发第一个下拉框的选择事件
handle_combobox_changed(0, i)
希望这次能够解决问题。如果问题仍然存在,请提供相关的错误信息以便我更进一步帮助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |