所以我目前正在尝试在 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()
非常感谢您的帮助。 谢谢
最佳答案
您正在将方法 self.autoAddWidget(frame, x,0)
的结果传递给 command
参数,而不是方法本身。您必须向那里传递对可调用对象的引用,该对象是事件发生时将调用的函数。请查看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()
关于Python - 自动添加小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734953/