【发布时间】:2021-04-29 18:10:40
【问题描述】:
我有 2 个选项菜单。我们将调用 optionmenu1 plan_time 和 optionmenu2 week_options。
第一个选项菜单 (plan_time) 设置周数。保存后,它会通过运行此函数来更新第二个选项菜单 (week_options),该函数会破坏 week_options 并重建它。
用于编写week_options 的新副本的代码与用于编写week_options 的第一个副本的代码相同。
week_clicked (week_options) 上有一个可以正常工作的跟踪。直到新的周数被保存并且小部件被销毁并重绘。然后由于某种原因,我新创建的列表的前 2 个选项不起作用。
currentweek = 4 # this is grabbed from config.ini but will just place a number for now.
def build_optionmenu():
week_options.destroy()
week_optionlist = {'Current Week':currentweek}
add_optionlist = {"Week " + str(i):i for i in range(1,(plan_time_optionlist[plan_time_clicked.get()])+1)}
week_optionlist.update(add_optionlist)
week_clicked.set(currentweek)
week_options = tk.OptionMenu(frame_settings_section2, week_clicked, *week_optionlist.keys())
week_options.pack()
print(week_optionlist)
plan_time_optionlist = {'Continuous':1}
add_optionlist = {str(i) + " Weeks":i for i in range(2,17)}
plan_time_optionlist.update(add_optionlist)
plan_time_clicked = StringVar()
plan_time_clicked.set(df_duration.get() + " Weeks")
plan_time_options = tk.OptionMenu(frame_settings_section2, plan_time_clicked, *plan_time_optionlist.keys())
plan_time_options.pack()
tk.Button(frame_settings_section2, text="<save>", command=update_optionmenus).pack()
我打印了这个列表,看看它是否看起来很有趣,但它看起来应该是这样的。
{'Current Week': 4, 'Week 1': 1, 'Week 2': 2, 'Week 3': 3, 'Week 4': 4, 'Week 5': 5,...}
所以我不明白为什么前 2 个选项“当前周”和“第 1 周”
给KeyError: 'Current Week'
和KeyError: 'Week 1'
当我从重新创建的下拉菜单中单击它们时。
【问题讨论】:
-
我没有对函数做任何事情,现在第 1 周可以工作了。任何想法这可能是什么 LOL
标签: python tkinter trace optionmenu