在我们买奶茶的时候,店主通常会询问是否加糖、是否加珍珠、是否加果粒等等,此时就是 Checkbutton
发挥作用的最好时机。
示例代码如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
var_sugar = StringVar()
var_pearl = StringVar()
var_fruit = StringVar()
check_sugar=ttk.Checkbutton(main,text=“加糖”,variable=var_sugar,onvalue=“加”,offvalue=“不加”)
check_pearl= ttk.Checkbutton(main,text=“加珍珠”,variable=var_pearl,onvalue=“加”,offvalue=“不加”)
check_fruit=ttk.Checkbutton(main,text=“加果粒”,variable=var_fruit,onvalue=“加”,offvalue=“不加”)
main.grid()
check_sugar.grid(column=0,row=0)
check_pearl.grid(column=0,row=1)
check_fruit.grid(column=0,row=2)
root.mainloop()
以上代码创建了一个用于询问是否在奶茶里添加额外物品的界面,如下图所示:
作为一个成年人,当然是我全都要:
Checkbutton
多选框的值
上个代码示例,我们使用 onvalue
和 offvalue
指定了每个 Checkbutton
的选中值和不选中值。
实际上,Checkbutton
在不手动指定各个状态值的情况下,有一个默认值,选中为 1
,不选中为 0
。
Checkbutton
不会初始化链接的变量,所以需要设定链接变量的初始值!!
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
var_sugar = StringVar() # 不设定值
var_pearl = StringVar()
var_pearl.set(“加”)
var_fruit = StringVar()
var_fruit.set(“不加”)
check_sugar=ttk.Checkbutton(main,text=“加糖”,variable=var_sugar,onvalue=“yes”,offvalue=“no”)
check_pearl= ttk.Checkbutton(main,text=“加珍珠”,variable=var_pearl,onvalue=“加”,offvalue=“不加”)
check_fruit=ttk.Checkbutton(main,text=“加果粒”,variable=var_fruit,onvalue=“加”,offvalue=“不加”)
l_sugar = ttk.Label(main,textvariable=var_sugar)
l_pearl = ttk.Label(main,textvariable=var_pearl)
l_fruit = ttk.Label(main,textvariable=var_fruit)
main.grid()
check_sugar.grid(column=0,row=0)
check_pearl.grid(column=0,row=1)
check_fruit.grid(column=0,row=2)
l_sugar.grid(column=1,row=0)
l_pearl.grid(column=1,row=1)
l_fruit.grid(column=1,row=2)
root.mainloop()
执行结果如下:
以上代码 var_sugar
在程序启动之初,并没有被初始化,因此,我们在使用 Checkbutton
时要初始化链接变量的值。
Checkbutton
事件绑定
使用 command
参数可以为 Checkbutton
对象绑定对应的事件,每当其状态发生改变时都会触发该事件。
示例代码如下:
from tkinter import *
from tkinter import ttk
def click():
check[‘text’]=var_sugar.get()
root = Tk()
main = ttk.Frame(root)
var_sugar = StringVar()
check=ttk.Checkbutton(main,text=“点击事件”,variable=var_sugar,onvalue=“yes”,offvalue=“no”,command=click)
最后
我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
篇幅有限,仅展示部分截图: