1. 勾選框 (Checkbutton)
勾選框是一個小方框,用戶可以選擇勾選或取消勾選。它可以用來讓用戶從提供的選項中選擇一個或多個。
創建勾選框
可以使用 Checkbutton 小部件來創建勾選框。為了追蹤勾選框的狀態(是否被勾選),通常會使用 IntVar 類型的變數。該變數的值為 1 表示已勾選,為 0 表示未勾選。
Python
import tkinter as tk
# 檢查勾選框狀態的函數
def show_status():
print("開啟" if var.get() == 1 else "關閉")
# 創建窗口
root = tk.Tk()
root.title("勾選框範例")
# 用於記錄狀態的變數
var = tk.IntVar()
# 勾選框與變數 var 綁定
checkbox = tk.Checkbutton(root, text="啟用選項", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
程式碼解釋
-
variable=var: 將勾選框綁定到變數var,以便在勾選框狀態改變時更新其值。 - 函數
show_status(): 顯示勾選框當前的狀態。如果勾選框被勾選,則輸出 "開啟",否則輸出 "關閉"。
使用多個勾選框
如果需要多個獨立選項,可以創建多個勾選框,每個勾選框綁定到不同的變數。
Python
# 狀態變數
option1 = tk.IntVar()
option2 = tk.IntVar()
# 勾選框
check1 = tk.Checkbutton(root, text="選項 1", variable=option1)
check2 = tk.Checkbutton(root, text="選項 2", variable=option2)
check1.pack()
check2.pack()
2. 單選按鈕 (Radiobutton)
單選按鈕是一組圓形按鈕,用戶只能選擇其中之一。當需要讓用戶從多個選項中選擇一個時非常有用。
創建單選按鈕
可以使用 Radiobutton 小部件來創建單選按鈕。為了使按鈕之間的選擇互相關聯,所有按鈕應該綁定到相同的變數(IntVar 或 StringVar)。
Python
# 顯示所選選項的函數
def show_choice():
print(f"選擇了選項 {choice.get()}")
# 用於記錄選擇的變數
choice = tk.IntVar()
# 單選按鈕
radio1 = tk.Radiobutton(root, text="選項 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="選項 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="選項 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
程式碼解釋
-
variable=choice: 將所有單選按鈕綁定到同一個變數choice,以實現它們的互動聯繫。 -
value: 定義當用戶選擇該按鈕時,變數choice的值。 - 函數
show_choice(): 顯示當前選擇的選項。
單選按鈕與文字值
單選按鈕也可以與 StringVar 類型的變數綁定,使用文字作為值。
Python
# 用於記錄文字選擇的變數
color_choice = tk.StringVar()
# 單選按鈕與文字值
radio_red = tk.Radiobutton(root, text="紅色", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="藍色", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="綠色", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. 切換器 (Spinbox)
切換器允許用戶從一個範圍內選擇數值。這個小部件對於輸入數值(如年齡或數量)特別實用。
創建切換器
在 Tkinter 中,可以使用 Spinbox 小部件創建切換器,用戶可以通過箭頭或手動輸入來選擇值。
Python
# 顯示所選數值的函數
def show_spin_value():
print(f"值: {spin.get()}")
# 從 1 到 10 的切換器
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
程式碼解釋
from_和to: 定義切換器的值範圍。- 函數
show_spin_value(): 每次值改變時,顯示當前選擇的值。
調整步長和值
使用參數 increment 設置切換器的步長,使用 values 設置具體值。
Python
# 步長為 2 的切換器
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# 使用指定值的切換器
spin_values = tk.Spinbox(root, values=("小", "中", "大"))
spin_values.pack(pady=5)
4. 範例應用程序
包含勾選框、單選按鈕和切換器的範例應用程序
現在將以上內容結合起來,創建一個包含勾選框、單選按鈕和切換器的介面,讓用戶選擇多項選項並查看結果。
Python
import tkinter as tk
# 創建主窗口
root = tk.Tk()
root.title("勾選框、單選按鈕和切換器範例")
root.geometry("300x300")
# 顯示選擇的函數
def show_selections():
selections = []
selections.append(f"勾選框狀態: {'是' if option.get() == 1 else '否'}")
selections.append(f"選中的顏色: {color_choice.get()}")
selections.append(f"數量: {spin.get()}")
message_label.config(text="\n".join(selections))
# 勾選框
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="啟用選項", variable=option)
checkbox.pack(pady=5)
# 單選按鈕
color_choice = tk.StringVar(value="紅色")
tk.Label(root, text="選擇顏色:").pack()
radio_red = tk.Radiobutton(root, text="紅色", variable=color_choice, value="紅色")
radio_blue = tk.Radiobutton(root, text="藍色", variable=color_choice, value="藍色")
radio_green = tk.Radiobutton(root, text="綠色", variable=color_choice, value="綠色")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# 切換器
tk.Label(root, text="數量:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# 顯示所選值的按鈕
show_button = tk.Button(root, text="顯示選擇", command=show_selections)
show_button.pack(pady=10)
# 用於顯示結果的標籤
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
完整範例的解釋
- 勾選框: 讓用戶啟用或禁用某個選項。
- 單選按鈕: 讓用戶從三種顏色中選擇一種。
- 切換器: 允許用戶選擇 1 到 10 的數字。
- 按鈕 "顯示選擇": 顯示所有選項的當前狀態,並更新到標籤
message_label。
GO TO FULL VERSION