如何在Tkinter中选中TreeView行时更新OptionMenu的显示值?
ttk.OptionMenu的显示状态由其绑定的StringVar变量控制,而非直接操作组件本身。你的代码中已经用selected这个StringVar绑定了post_menu,因此只需在select_record函数中更新selected的值,就能让OptionMenu同步显示TreeView选中行的职位。
修改后的select_record函数
def select_record(e): # 清空输入框 emp_id_entry.delete(0, END) salary_entry.delete(0, END) fn_entry.delete(0, END) ln_entry.delete(0, END) email_entry.delete(0, END) # 获取选中的记录 selected_record = employee_tree.focus() values = employee_tree.item(selected_record, 'values') # 填充输入框 emp_id_entry.insert(0, values[0]) salary_entry.insert(0, values[1]) fn_entry.insert(0, values[2]) ln_entry.insert(0, values[3]) # 同步职位到OptionMenu selected.set(values[4]) email_entry.insert(0, values[5])
可选:处理异常情况
如果数据库中的职位值可能不在预设的options列表中,可以添加判断逻辑,避免OptionMenu显示无效值:
# 仅当职位值在选项列表中时更新,否则重置为默认占位符 if values[4] in options: selected.set(values[4]) else: selected.set(options[0])
内容的提问来源于stack exchange,提问作者Jockfaire
相关产品推荐
相关产品推荐

