0

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

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 函数内的代码(除了返回行)并运行代码,您将看到一个标签、一个选项菜单和一个按钮。我希望“+”按钮创建具有相同小部件的另一行。这个最小代码不是我真正的应用程序,但这是我不能做的核心。

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

谢谢。

4

1 回答 1

2

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

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)

正如它所写的那样,您是在add_line创建 Button 时调用该函数,而不是在按下它时调用该函数。

于 2012-11-07T05:32:30.890 回答