在主程序中单击 运行 选项之前,会出现新的顶级 window。

New Top Level window appears before clicking the option to run it in the main program.

单击菜单栏中的选项时,假设单击时会出现新的 window。但是,当主程序开始 运行 时,在单击菜单中的选项之前,新的 window 会立即出现。

为什么window只在点击选项时出现,而不是在主程序开始运行时立即出现?

#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()

而不是:

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]()