Tkinter - tk 变量

Python 与控件之间的双向数据绑定


变量类型

存储类型 默认值
StringVar str ""
IntVar int 0
DoubleVar float 0.0
BooleanVar bool False

variable_binding.py

slider_val = tk.DoubleVar()

# Scale 控件写入 slider_val
ttk.Scale(root, variable=slider_val, from_=0, to=100).pack(fill="x", padx=20)

# 标签自动显示当前值
ttk.Label(root, textvariable=slider_val).pack()

# 输入框也绑定——输入数值会移动滑块
ttk.Entry(root, textvariable=slider_val).pack(pady=4)

trace_add() —— 监视变化

var.trace_add(mode, callback) → trace_id

mode"read""write""unset" 之一。回调函数接收 (name, index, mode) 三个参数。

live_search.py

ITEMS = ["apple", "apricot", "banana", "blueberry", "cherry"]
query = tk.StringVar()

ttk.Entry(root, textvariable=query).pack(pady=8)
listbox = tk.Listbox(root, height=6)
listbox.pack(pady=4)

def filter_items(*_):
    q = query.get().lower()
    listbox.delete(0, tk.END)
    for item in ITEMS:
        if q in item:
            listbox.insert(tk.END, item)

query.trace_add("write", filter_items)
filter_items()

控件与变量的关联

控件 选项 变量类型
EntryLabelButton textvariable= StringVar
Checkbutton variable= BooleanVarIntVar
Radiobutton variable= StringVarIntVar
Scale variable= IntVarDoubleVar
Spinbox / Combobox textvariable= StringVar
posted @ 2026-07-10 09:07  箫笛  阅读(5)  评论(0)    收藏  举报