Tkinter (04) 核取按鈕部件 Checkbutton

Jason990420發表於2020-07-19

核取按鈕部件的建立及其選項

import tkinter as tk
parent = tk.Tk()
w = tk.Checkbutton(parent, option=value, ...)
選項 說明
activebackground active 時的背景色
activeforeground active 時的前景色
anchor 部件定位點
bg or background 背景色, 點陣圖時為顏色值0的顏色
bitmap 按鈕的點陣圖
bd or borderwidth 指示框的寛度, 內定為2圖素
command 部件狀態值改變呼叫的程式
compound 圖與文字共用時, 圖相對於文字的位置. TOP/DOWN/LEFT/BOTTOM/CENTER
cursor 當滑鼠移到部件時, 所顯示的滑鼠圖示
disabledforeground disabled 時的前景色
font 文字字型
fg or foreground 前景色, 點陣圖時為顏色值1的顏色
height 文字行數, 內定為1
highlightbackground 非聚焦時的聚焦顏色
highlightcolor 聚焦時的聚焦顏色
highlightthickness 聚焦厚度, 內定1, 0則無
image 按鈕圖片
indicatoron 有沒有狀態指示器, 1 或 0, 0 則沒有, 就會變成兩個按鈕
justify 多行文字的對齊方式, LEFT/RIGHT/CENTER
offrelief 部件狀態值為 0 時的顯示花邊樣式, 內定為 RAISED
offvalue 部件狀態值為 0 時的的變數值
onvalue 部件狀態值為 1 時的的變數值
overrelief 滑鼠在按鈕上方時的顯示花邊樣式
padx 水平間距, 內定為 1 點素
pady 垂直間距, 內定為 1 點素
relief 按鈕花邊樣式, 內定為 FLAT
selectcolor 選定按鈕的顏色, 內定為 red
selectimage 選定按鈕的圖片
state 狀態 NORMAL 內定 / HIDDEN/DISABLED
takefocus TAB 鍵在畫布是否會迴圈焦點,1 則會,內定為空字串,則僅在具有鍵繫結下迴圈焦點
text 文字字串,使用\n 分行
textvariable 文字字串變數
underline 設定下底線的位置, 內定 -1 為無
variable 選定的按鈕變數值
width 文字寛度, 內定為顯示文字或圖片的尺寸
wraplength 文字分行寛度

方法及說明

方法 說明
deselect() 取消按鈕
flash() 在 normal 與 active 間的數次顏色切換
invoke() 點選按鈕
select() 選擇按鈕
toggle() 切換按鈕

範例視窗及程式碼

Tkinter (04) 核取按鈕部件 Checkbutton

from tkinter import *

def action():
    select = [item.get() for item in selection]
    label.configure(text=f'{select}')

def bttn(index):
    print(index)
    func[index]()
    action()

root = Tk()

selection = [IntVar() for i in range(5)]
check_button = [Checkbutton(root, text=f'Option {i}', variable=selection[i],
    command=action) for i in range(5)]
for i in range(5):
    check_button[i].grid(column=i, row=0)

label = Label(text='', height=1, width=20)
label.grid(column=2, row=1)
action()

function = ["deselect - OFF", "flash", "invoke - Click", "select - ON",
    "toggle - ON/OFF"]
button = [Button(text=key, width=20, command=lambda k=i: bttn(k))
    for i, key in enumerate(function)]
for i in range(5):
    button[i].grid(column=i, row=2)
func = [check_button[0].deselect, check_button[0].flash, check_button[0].invoke,
    check_button[0].select, check_button[0].toggle]

top.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章