首頁 > 後端開發 > Python教學 > 為什麼我的 Tkinter 按鈕在創建時而不是單擊時執行命令?

為什麼我的 Tkinter 按鈕在創建時而不是單擊時執行命令?

DDD
發布: 2024-12-23 09:46:10
原創
114 人瀏覽過

Why Does My Tkinter Button Execute Its Command on Creation Instead of On Click?

建立時執行按鈕指令

在Tkinter 中,當使用指令參數初始化Button 實例時,關聯的函數旨在點擊按鈕時執行。然而,在某些情況下,該命令可能會在按鈕建立後立即執行,這與預期的行為相反。

程式碼範例分析

考慮以下程式碼:

from Tkinter import *

admin = Tk()
def button(an):
    print(an)
    print('het')

b = Button(admin, text='as', command=button('hey'))
b.pack()
mainloop()
登入後複製

問題說明

問題描述

何時

問題說明

command=button('hey')
登入後複製
您運行此代碼,該按鈕似乎無法正常工作。它不是在單擊時執行按鈕功能,而是在創建後立即列印“hey”和“het”。

result = button('hey')
command=result
登入後複製
說明

問題在於指令的方式參數正在初始化。該行:

將按鈕('hey')函數呼叫的結果傳遞給指令參數。這相當於:

command=button
登入後複製
由於button('hey')函數立即執行並傳回結果,因此命令被設定為結果而不是函數參考本身。因此,函數會立即執行,而不是在按一下按鈕時執行。

解決方案

  • 要解決此問題,您必須傳遞按鈕的引用函數而不執行它。為此,只需在初始化命令參數時省略括號即可:
  • 附加說明
了解傳遞函數之間的區別非常重要引用並執行函數。 考慮使用 lambda 函數或 functools.partial 來提供必要時回呼函數的參數。 請參閱 zone.effbot.org 關於 Tkinter 回調的教學以獲取更多詳細資訊。

以上是為什麼我的 Tkinter 按鈕在創建時而不是單擊時執行命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板