为什么函数在被调用之前运行?

时间:2016-01-24 22:17:55

标签: python-3.x tkinter

我正在编写一个python脚本。这是我的python脚本:

import tkinter

def print_the_nothing_thing():
    print ("I told you, nothing means nothing. For further assistance, please see:")
    print ("https://www.youtube.com/watch?v=3WNlWyFgLCg")
    print ("Type the url into the browser.")

#setup the window
window=tkinter.Tk()
menu=tkinter.Menu(window)
window.configure(menu=menu)
view=tkinter.Menu(menu)
file=tkinter.Menu(menu)
menu.add_cascade(label="File",menu=file)
menu.add_cascade(label="View",menu=view)
#here is my problem
view.add_command(label="Nothing here!",command=print_the_nothing_thing())
file.add_command(label="Nothing here!",command=print_the_nothing_thing())
helpm.add_command(label="Help",command=helpy())
window.mainloop()

我的问题是,当我定义函数时,它首先运行函数。关闭后,菜单命令不执行任何操作。

2 个答案:

答案 0 :(得分:2)

您需要从()行移除add_command,例如

view.add_command(label="Nothing here!",command=print_the_nothing_thing)
file.add_command(label="Nothing here!",command=print_the_nothing_thing)

你在那里调用那些函数,然后返回None。如果只使用函数的名称,则会得到一个函数对象。

答案 1 :(得分:1)

您正在调用add_command中的函数:

view.add_command(label="Nothing here!",command=print_the_nothing_thing())
file.add_command(label="Nothing here!",command=print_the_nothing_thing())
helpm.add_command(label="Help",command=helpy())

相反,将add_command指向函数名称;不执行它。 因此:

view.add_command(label="Nothing here!",command=print_the_nothing_thing)
file.add_command(label="Nothing here!",command=print_the_nothing_thing)
helpm.add_command(label="Help",command=helpy)