Python 3如何暂时禁用跟踪变量
发布时间:2020-12-20 11:38:16 所属栏目:Python 来源:网络整理
导读:我在 Windows上使用 Python 3.4.1,如果这应该有帮助. Q1:如何暂时禁用跟踪变量 我有一个跟踪的变量字段,我想暂时禁用跟踪,以便我可以更改字段的值而不触发对跟踪功能的调用. 是否有意义? 可能是我做错了(我加入了一段代码): 我有一个下拉列表,显示了我可
我在
Windows上使用
Python 3.4.1,如果这应该有帮助.
Q1:如何暂时禁用跟踪变量 是否有意义? 可能是我做错了(我加入了一段代码): 我有一个下拉列表,显示了我可以选择的项目列表. Q2:问题是,当第一个下拉菜单发生变化时,如何“重新包装”第二个下拉菜单? 这是代码: import tkinter as tk WORKINGWINDOWWIDTH = 800 # Width for the working window WORKINGWINDOWHEIGHT = 800 # Height for the working window root = tk.Tk() w = tk.Canvas(root,width=WORKINGWINDOWWIDTH - 10,height=WORKINGWINDOWHEIGHT - 10,bg="darkred") def display_parameters(*args): print("args: {0},and I have the following option: {1}".format(args,functionChoiceVar.get())) if functionChoiceVar.get() == "Option 1": print("I picked the first one...") print("How do I repack the presets?") elif functionChoiceVar.get() == "Option 2": print("I picked the second one...") return def display_options(*args): print("args: {0},and I have the following suboption: {1}".format(args,presetChoiceVar.get())) return functionChoiceVar = tk.StringVar(root) functionChoices = ['Option 1','Option 2'] functionOption = tk.OptionMenu(root,functionChoiceVar,*functionChoices) functionOption.pack(side='left',padx=10,pady=10) functionOption.place(x= 10,y=10) functionChoiceVar.set('Option 1') functionChoiceVar.trace("w",display_parameters) presetChoiceVar = tk.StringVar(root) presetChoices11 = ['Suboption 11','Suboption 12','Suboption 13','Suboption 14','Suboption 15'] presetChoices12 = ['Suboption 21','Suboption 22','Suboption 23','Suboption 24','Suboption 25'] presetOption = tk.OptionMenu(root,presetChoiceVar,*presetChoices11) presetOption.pack(side='left',pady=10) presetOption.place(x= 100,y=10) presetChoiceVar.set('Suboption 11') presetChoiceVar.trace("w",display_options) 解决方法
设置跟踪时,tkinter将返回一个id,您可以使用该ID来稍后使用.trace_vdelete()方法删除跟踪.要重新启动跟踪,只需执行您第一次执行的操作即可.
跟踪跟踪ID的一种简单方法是将其作为属性存储到StringVar的实例中. 例如: functionChoiceVar.trace_id = functionChoiceVar.trace("w",display_parameters) ... functionChoiceVar.trace_vdelete("w",functionChoiceVar.trace_id) (顺便说一下,与问题无关,调用.pack()然后立即调用.place()没有任何意义.你可以删除对.pack()的调用,因为它被.place调用否定了()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |