Python 为什么在按下按钮之前调用该函数?

Python 为什么在按下按钮之前调用该函数?,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我的程序使用用户在Tkinter中输入的pointSize\u max和pointSize变量绘制分形。问题在于,分形是在按下按钮之前绘制的(只要程序运行),而按下按钮时程序不会绘制分形 pointLabel = tk.Label(frame,text="minimaalne pikkus") pointLabel.pack() pointSize = tk.StringVar() pointEntry = tk.Entry(frame,textvariable=pointSize) point

我的程序使用用户在Tkinter中输入的
pointSize\u max
pointSize
变量绘制分形。问题在于,分形是在按下按钮之前绘制的(只要程序运行),而按下按钮时程序不会绘制分形

pointLabel = tk.Label(frame,text="minimaalne pikkus")
pointLabel.pack()
pointSize = tk.StringVar()
pointEntry = tk.Entry(frame,textvariable=pointSize)
pointEntry.pack()
pointSize.set(str(10))

pointLabel_max = tk.Label(frame,text="maksimaalne pikkus")
pointLabel_max.pack()
pointSize_max = tk.StringVar()
pointEntry_max = tk.Entry(frame,textvariable=pointSize_max)
pointEntry_max.pack()
pointSize_max.set(str(30))

drawButton = tk.Button(frame, text = "Draw a fractal", command=koch(int(pointSize_max.get()), int(pointSize.get())))

# koch function draws the fractal 

drawButton.pack()

tk.mainloop()

创建按钮时调用
koch
函数,作为
tk.button
调用之前参数评估的一部分。您可以创建一个要调用的函数对象

def koch_invoke():
    koch(int(pointSize_max.get()), int(pointSize.get()))
drawButton = tk.Button(frame, text = "Draw a fractal", command=koch_invoke)

编译脚本时,它会转到此行并运行函数,因为您正在调用它:

command=koch(int(pointSize_max.get()), int(pointSize.get()))
尝试使用lambda来防止这种情况发生:

command= lambda x = int(pointSize_max.get()), y = int(pointSize.get()): koch(x, y))

非常感谢。但现在按钮没有出现。@user2690370恐怕这是另一个问题。如果您关闭
命令
,按钮是否会出现?我发现了问题。非常感谢你的帮助!