1

所以我目前正在尝试在 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()

将不胜感激。谢谢

4

1 回答 1

3

您从方法而不是方法本身传递给command参数结果。self.autoAddWidget(frame, x,0)您必须在那里传递对可调用对象的引用,该对象是事件发生时将调用的函数。请在下次提问之前检查文档。

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

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()
于 2013-03-31T22:13:14.543 回答