在tkinter 按鈕建立循環中傳遞命令參數
在Tkinter 中,當在for 循環中建立一系列按鈕時,使用者經常建立一系列按鈕面臨將不同的命令參數傳遞給每個按鈕的問題。目標是透過在函數呼叫期間提取計數值 (i) 來識別按下了哪個按鈕。
但是,在實現這種方法時,開發人員遇到了一個特殊的問題:無論創建的按鈕數量有多少,列印出來的按鈕都會被按下。值保持不變,對應於循環的最終迭代。這表明,雖然按鈕是獨立建立的,但其命令參數中的 i 值似乎是共享的。
解決問題
要克服此困難並分配糾正每個按鈕的i 值,需要修改命令中使用的lambda 函數:
command=lambda: self.open_this(i)
在原始lambda 中,i變數是在函數定義時捕獲的,並且由於它是在循環外部分配的,因此在呼叫函數時它已被替換為最後一個循環值。
修改後的 lambda 透過引入附加參數 i=i,它在函數定義時將當前 i 值指派給新變數。因此,每個按鈕建立都會保留相應的 i 值,確保正確操作。
以上是如何將唯一參數傳遞給循環中建立的 Tkinter 按鈕?的詳細內容。更多資訊請關注PHP中文網其他相關文章!