0

单击菜单栏中的选项时,假设单击时会出现一个新窗口。但是,当主程序开始运行时,新窗口会立即出现,然后单击菜单中的选项。

窗口如何仅在单击选项时出现,而不是在主程序开始运行时立即出现?

#Main Program

from tkinter import *
from tkinter import ttk
import module

root = Tk()

main_menu_bar = Menu(root)

main_option = Menu(main_menu_bar, tearoff=0)
main_option.add_command(label = "Option 1", command = module.function())
main_menu_bar.add_cascade(label="Main Option", menu=main_option)
root.config(menu=main_menu_bar)

root.mainloop()


#Module
from tkinter import *
from tkinter import ttk

def function ():
    new_window = Toplevel()
4

1 回答 1

2

代替:

main_option.add_command(label = "Option 1", command = module.function())

尝试:

main_option.add_command(label = "Option 1", command = module.function)

如果你放括号,函数将立即执行,而如果你不放括号,它只会是对该函数的引用,将在事件信号上执行。

为了更清楚,如果您想将函数存储在列表中以供以后执行,也会发生同样的事情:

def f():
    print("hello")

a = [f()]  # this will immediately run the function 
           # (when the list is created) and store what 
           # it returns (in this case None)

b = [f]    # the function here will *only* run if you do b[0]()
于 2017-01-03T07:54:52.393 回答