Tkinter根据OptionMenu的答案添加条目

时间:2014-12-30 19:49:33

标签: python tkinter

我正在使用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)

1 个答案:

答案 0 :(得分:0)

GUI编程的核心思想是注册要在用户操作的反应中执行的代码。这样的代码通常被命名为callback(工具包根据接口上的用户操作调用它)。

您可以使用以下行绑定到DataCubeValue更改。每次DataCubeValue的值发生变化时,都会导致callback方法(之前定义)。

DataCubeValue.trace("w", callback)

callback方法中,您可以选择使用LabelEntry实例化放置代码块,但认为每次用户更改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()