我正在使用TKinter(我是GUI工具的新手),我想知道是否可以根据选项菜单的答案添加(或激活)一个条目。以下是代码的一部分
from Tkinter import *
win=Tk()
Label(win, text="Is This a Data Cube?",font='20').grid(row=14, column=0,sticky=W)
DataCubeValue = StringVar(win)
DataCubeValue.set("False")
DataCube = OptionMenu(win,DataCubeValue,"True","False")
DataCube.grid(row=15, column=0,sticky=W)
如果答案是True
,我想显示:
Label(win, text="X and Y values (x,y)",font='20').grid(row=14, column=1,sticky=W)
XYValue = StringVar(win)
XYValue.set("10,7")
XY = Entry(win,textvariable=XYValue)
XY.grid(row=15, column=1,sticky=W)
答案 0 :(得分:0)
GUI编程的核心思想是注册要在用户操作的反应中执行的代码。这样的代码通常被命名为callback(工具包根据接口上的用户操作调用它)。
您可以使用以下行绑定到DataCubeValue更改。每次DataCubeValue的值发生变化时,都会导致callback
方法(之前定义)。
DataCubeValue.trace("w", callback)
在callback
方法中,您可以选择使用Label
和Entry
实例化放置代码块,但认为每次用户更改OptionMenu时都会调用回调值。您可以在用户使用后停用OptionMenu,但我建议您在初始运行时实例化您的小部件,并在回调中显示或隐藏它们。
def callback(*args):
if DataCubeValue.get() == "True":
label.grid(row=14, column=1,sticky=W)
XY.grid(row=15, column=1,sticky=W)
else:
label.grid_forget()
XY.grid_forget()