Featured image of post Python Basic 26 Tkinter Checkbutton Widget

Python Basic 26 Tkinter Checkbutton Widget

本篇文章主要 Python Tkinter 的 Checkbutton Widget

Python Tkinter Checkbutton Widget 详解 ✔️📝

Checkbutton 是 Tkinter 中的复选框控件,允许用户选中/取消选中选项 (◉‿◉)

基本用法

1
2
3
4
5
6
7
8
9
from tkinter import *

root = Tk()

# 创建 Checkbutton
check = Checkbutton(root, text="接受条款")
check.pack()

root.mainloop()

alt text

变量绑定 🔄

Checkbutton 需要绑定变量来存储状态:

变量类型 默认值 选中值
IntVar 0 1
BooleanVar False True
StringVar "" “1”

示例代码 👇

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from tkinter import *

root = Tk()

# 创建变量 (IntVar 或 BooleanVar 都可用)
var = IntVar()  # 或 var = BooleanVar()

# 绑定变量
check = Checkbutton(root, text="记住密码", variable=var)
check.pack()

# 获取值按钮
def show_value():
    print("当前状态:", var.get())

Button(root, text="显示状态", command=show_value).pack()

root.mainloop()

alt text

初始值和事件处理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from tkinter import *

root = Tk()

var = BooleanVar(value=True)  # 初始选中状态

def on_change():
    print("状态变化为:", var.get())

check = Checkbutton(root, 
                   text="自动登录",
                   variable=var,
                   command=on_change)  # 状态变化时执行的函数
check.pack()

root.mainloop()

禁用和样式 ✏️

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from tkinter import *

root = Tk()

var = IntVar()

check = Checkbutton(root,
                   text="夜间模式",
                   variable=var,
                   fg="blue",         # 文字颜色
                   bg="lightyellow",  # 背景色
                   activebackground="pink",  # 点击时的背景色
                   disabledforeground="gray",  # 禁用时的颜色
                   selectcolor="green")  # 选中时的背景色
check.pack()

# 禁用复选框
Button(root, text="禁用", command=lambda: check.config(state=DISABLED)).pack()
Button(root, text="启用", command=lambda: check.config(state=NORMAL)).pack()

root.mainloop()

alt text

实战示例 - 多选选项 📋

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from tkinter import *

root = Tk()

hobbies = ["阅读", "运动", "音乐", "游戏"]
vars = []

for hobby in hobbies:
    var = BooleanVar()
    Checkbutton(root, text=hobby, variable=var).pack(anchor="w")
    vars.append(var)

def submit():
    selected = [hobbies[i] for i, var in enumerate(vars) if var.get()]
    print("选择了:", ", ".join(selected) or "无")

Button(root, text="提交", command=submit).pack()

root.mainloop()

alt text

总结 🎯

  • 使用 variable= 参数绑定变量 (IntVar, BooleanVar 或 StringVar)
  • 通过 command= 设置状态变化时的回调函数
  • config() 方法可动态修改 Checkbutton 属性
  • 多个 Checkbutton 可以用列表管理变量

希望这份指南对你有帮助!(っ^▿^)💨

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计