Python tk-command binding (4)

大軒軒
Mar 25, 2024

--

最簡單的互動機制,按下按鈕,接著發生事情。
能使用這個方法的 widget 不多是最大缺點。

此篇目標:

  • 知道觸發的條件
  • 會寫基本的語法
  • 知道怎麼帶參數

目錄:

  • 觸發條件
  • 可以使用 command binding 的物件
  • 基礎範例
  • 帶參數的範例

觸發條件

會特別說明觸發條件,因為 按鈕 有其必要的點擊方式。

只有使用底下方式按按鈕,才會觸發

  • 使用滑鼠左鍵點擊
  • 先 focus 按鈕,再使用鍵盤的空白鍵

使用 Enter 鍵不會觸發 command,如果要使用 Enter 鍵,須改用 event binding。

可以使用 command binding 的物件

tkinter 內建可以使用 command binding 的物件

  • Button
  • Spinbox
  • Radiobutton
  • Checkbutton

基礎範例

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

# 按下按鈕會被執行的方法
def pushed():
lbl['text'] = "Hello"


lbl = ttk.Label(text="Please push button.")
bnt = ttk.Button(text="Push Me", command=pushed) # 加上 command 參數
lbl.pack()
bnt.pack()

window.mainloop()

帶參數的範例

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

# 按下按鈕會被執行的方法
# 多了參數可以帶入
def pushed(s):
lbl['text'] = s


lbl = ttk.Label(text="Please push button.")
# command 後面改用 lambda,這樣就可以帶參數
bnt = ttk.Button(text="Push Me", command=lambda: pushed("Hello"))
lbl.pack()
bnt.pack()

window.mainloop()

--

--