以下是一个Python脚本,用于显示一个menu(file,option),其中option用于启动功能conf。
正如我所假设的那样,仅当我按下相应的菜单小部件时才会执行conf fun。
这意味着“ haha”将仅在我按下选项/编辑伴奏列表时打印,类似地,“ nana”将仅在我按下选项/“编辑pvt列表”时打印
但是,当我启动脚本top.py时,将以“ haha”和“ nana”开头打印。这是因为conf函数在开始时执行了两次。这是意外的。请指教。
该错误似乎出现在以下语句中:
menu_option.add_command(label =“编辑编辑列表”,command = conf('comp'))
menu_option.add_command(label =“编辑pvt列表”,command = conf('pvt'))
码:-
#File name :top.py
from Tkinter import *
import ttk
def conf(section):
if section == 'comp':
print 'haha'
if section == 'pvt':
print 'nana'
pass
root = Tk()
root.title("NRUNTEST GUI VERSION 1")
menuframe = Frame(root)
menuframe.grid(column=0,row=0)
menuframe.columnconfigure(0,weight=1)
menuframe.rowconfigure(0,weight=1)
buttonh = ttk.Button(root, text='Quit',command=root.quit)
buttonh.grid(row=2, column=2, sticky=(E,W))
menubar = Menu(menuframe)
menu_file = Menu(menubar, tearoff=0)
menu_option = Menu(menubar, tearoff=0)
menubar.add_cascade(menu=menu_file, label='File')
menubar.add_cascade(menu=menu_option, label='Option')
**menu_option.add_command(label="Edit Comp List",command=conf('comp'))**
menu_option.add_separator()
**menu_option.add_command(label="Edit pvt List",command=conf('pvt'))**
menu_file.add_separator()
root.config(menu=menubar)
root.mainloop()
最佳答案
您的错误非常简单:
menu_option.add_command(label="Edit Comp List",command=conf('comp'))
当您传递此参数时:
command=conf('comp')
您实际上并没有通过。您正在将
conf('comp')
的结果作为函数传递。该函数的结果是一个print
语句,这是您观察到的。尝试为每种情况制作单独的功能,并添加如下命令:
command=function_name
关于python - 菜单命令链接到功能的异常行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8238085/