【问题标题】:Python 3.4.2 tkinter Menu Auto Calling Function [duplicate]Python 3.4.2 tkinter菜单自动调用功能[重复]
【发布时间】:2015-11-22 00:39:50
【问题描述】:

我对 python 的 tkinter gui 非常陌生,我正在尝试使用它来构建基本测试。

我创建了一个菜单,其中一个菜单项必须调用一个函数,尽管当我运行程序时,我可以在单击菜单项之前看到函数的输出,并且在单击菜单项时它不会调用功能。

我的代码如下

from tkinter import *

class cl_main():

    def __init__(self, master):

        lo_mainmenu = Menu(master)
        lo_mainmenu.option_add('*tearOff', FALSE)
        master.config(menu=lo_mainmenu)

        lo_menugroup = Menu(lo_mainmenu)

        lo_mainmenu.add_cascade(label="MenuGroup")
        lo_menugroup.add_command(label="Command", command=f_message())

def f_message():
    print ("This Function Has Been Called")

root = Tk()

co_main = cl_main(root)

root.mainloop()

我看不出有什么问题,但我敢肯定这里有什么可怕的问题

【问题讨论】:

    标签: python function tkinter menuitem python-3.4


    【解决方案1】:
    lo_menugroup.add_command(label="Command", command=f_message())
    

    回调不应该有括号。事实上,f_message 被立即调用,其返回值被分配给command,而不是函数对象本身。

    lo_menugroup.add_command(label="Command", command=f_message)
    

    【讨论】:

    • 天哪,这只是......我什至不知道,如果能解决这个问题,我会把自己从桥上扔下去
    • 是的,解决了,哇,我不敢相信,但非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多