所以我目前正在尝试在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()
非常感谢帮助。 谢谢
答案 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()