Python - 自动添加小部件

时间:2013-03-31 21:50:50

标签: python user-interface widget tkinter

所以我目前正在尝试在GUI上创建一个按钮,让用户生成一个新的输入字段。 我不知道该怎么做。我猜它需要一个lambda函数,但除此之外,我不知道。

这是我到目前为止的基本代码:

from tkinter import *

class prac:

    def autoAddWidget(self,frame,x,y):
        self.entryField = Entry(frame,text="Entry Field")
        self.entryField.grid(row=x, column=y)
        #lambda function? 

    def __init__(self, master):
        frame = Frame(master, width=60, height=50)
        frame.pack()

        x=1
        self.addWidgetButton = Button(frame, text="Add new widget", command=self.autoAddWidget(frame, x,0))
        self.addWidgetButton.grid(row=0, column=0)
        x+=1


root = Tk()
app = prac(root)
root.mainloop()

非常感谢帮助。 谢谢

1 个答案:

答案 0 :(得分:3)

您正在从方法command而不是方法本身传递self.autoAddWidget(frame, x,0)参数结果。你必须传递一个对可调用对象的引用,这个函数将在事件发生时被调用。在您提出问题之前,请在下次检查documentation

好的,我修复了代码,现在可以了:

from tkinter import *

class Prac:

    def autoAddWidget(self):
        self.entryField = Entry(self.frame,text="Entry Field")
        self.entryField.grid(row=self.x, column=0)
        self.x+=1

    def __init__(self, master):
        self.frame = Frame(master, width=60, height=50)
        self.frame.pack()

        self.x=1
        self.addWidgetButton = Button(self.frame, text="Add new widget", command=self.autoAddWidget)
        self.addWidgetButton.grid(row=0, column=0)


root = Tk()
app = Prac(root)
root.mainloop()