【问题标题】:How do I fix a button command from being executed as soon as the code is run? [duplicate]如何在代码运行后立即执行按钮命令? [复制]
【发布时间】:2019-06-01 00:56:24
【问题描述】:

我正在尝试获取一个按钮,以便在按下另一个名为 validate.py 的文件时执行一个函数,但该函数似乎在我运行代码后立即执行,但在我实际按下它时却没有?

按钮代码:

id_validate = ttk.Button(id_frame, text='Validate', 
command=validate.validate(pack_id.get()))

这是函数的代码:

def validate(pack_id):
    print('vAliDAte')
    return True

我希望每次单击按钮并在控制台中打印“验证”时执行该函数,但它只在我运行代码时执行一次,并且在按下按钮时不响应。

如何在代码运行时停止执行,仅在按下按钮时执行?

【问题讨论】:

    标签: python function button tkinter


    【解决方案1】:

    函数执行是因为你调用它;以括号结束函数名。

    命令属性只需要函数名。

    但是,您可以使用 lambda 解决此问题:

    command=lambda: validate(pack_id.get())
    

    关于在函数中使用名称 pack_id 的警告:在使用参数 pack_id.get() 调用函数时,您已经在全局范围内使用了该名称。这可能会导致问题。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多