如何修复id_rounds函数实现双联动combobox关联赛事的轮次ID提取
修复方案
你的id_rounds函数存在两个核心错误:
- 函数内部没有获取当前选中的赛事,变量
tournaments未定义 - SQL查询字段错误:
All_Round表没有Tournament字段,关联赛事用的是ID_Tournament字段
修复后的id_rounds函数
def id_rounds(): # 获取选中的轮次编号 selected_round = combo_rounds.get() # 调用已有的id_tournaments函数获取当前选中赛事的ID selected_tournament_id = id_tournaments() # 修正SQL查询,用ID_Tournament匹配赛事 cursor.execute('SELECT ID_Round FROM All_Round WHERE Number_Round=? AND ID_Tournament=?', (selected_round, selected_tournament_id)) result = [row[0] for row in cursor] return result[0]
额外优化(可选)
目前你的combo_rounds函数也存在逻辑问题,选中赛事后轮次下拉不会过滤对应赛事的轮次,会显示所有赛事的全部轮次,建议同步修复:
def combo_rounds(event=None): # 获取当前选中赛事的ID selected_tournament_id = id_tournaments() # 只查询对应赛事的轮次 cursor.execute('SELECT Number_Round From All_Round WHERE ID_Tournament=?', (selected_tournament_id,)) result = [row[0] for row in cursor] combo_Rounds['values'] = result # 重置轮次下拉默认值 combo_Rounds.set("Select") return result
内容的提问来源于stack exchange,提问作者user16579669
相关产品推荐
相关产品推荐

