Tkinter:如何动态更改布局

时间:2012-11-07 05:20:01

标签: python tkinter

基本上,我想要一个按钮,当按下按钮时,会向我的窗口添加内容。这是一些最低限度的代码:

from Tkinter import *

def create_line (N):
    """ """
    Label (root, text= "Color ").grid(row=N, column=0, padx=3)
    OptionMenu (root, v, *optionList).grid(row=N, column=1, padx=3)
    Button (root, text="+", command=add_line(N)).grid(row=N, column=2, padx=3)

def add_line (M):
    M = M +1
    Label (root, text= "Color ").grid(row=M, column=0, padx=3)
    OptionMenu (root, v, *optionList).grid(row=M, column=1, padx=3).grid(row=M,     
                 column=2, padx=3)
    return 1

root = Tk()
optionList = ("red", "green", "blue")
current_row = 0
v = StringVar()
v.set(optionList[0])
create_line(current_row)
mainloop()

如果你注释掉add_line函数中的代码(返回行除外)并运行代码,你会看到一个标签,一个选项菜单和一个按钮。我想要'+'按钮创建具有相同小部件的另一行。这个最小代码不是我真正的应用程序,但这是我不能做的核心。

我知道可以做到,因为我有一个我下载的应用程序,当我按下按钮时动态更改菜单选项,但这种技术对我来说似乎不起作用。

感谢。

1 个答案:

答案 0 :(得分:1)

我马上看到的一个问题是:

Button (root, text="+", command=add_line(N)).grid(row=N, column=2, padx=3)

应该是:

Button (root, text="+", command=lambda:add_line(N)).grid(row=N, column=2, padx=3)

在编写时,您在创建Button时调用函数add_line,而不是在按下它时。