菜单命令链接到函数的意外行为

2024-10-02 00:34:49 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个Python脚本,用于显示一个菜单(文件、选项),其中option用于启动conf函数。 正如我所假设的,conf fun只会在我按下相应的菜单小部件时执行。 这意味着“哈哈”只会在我按选项/编辑公司列表时打印,同样的“娜娜”只会在我按选项/编辑公司列表时打印

但是,当我开始脚本时顶部.py“哈哈”和“娜娜”都是用开头印的。这是因为conf函数在开始时执行了两次。这是出乎意料的。请给出建议。

错误出现在以下语句中:

menu_option.add_command(label="Edit Comp List",command=conf('comp')) menu_option.add_command(label="Edit pvt List",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()

Tags: addconf选项sectionrooteditlabelcommand
1条回答
网友
1楼 · 发布于 2024-10-02 00:34:49

你的错误很简单:

menu_option.add_command(label="Edit Comp List",command=conf('comp'))

当您传递此参数时:

command=conf('comp')

你不是真的通过了。将conf('comp')结果作为函数传递。该函数的结果是一个print语句,这就是您观察到的结果。你知道吗

尝试为每种情况创建单独的函数,并添加如下命令:

command=function_name

相关问题 更多 >

    热门问题