这是我参与8月更文挑战的第27天,活动详情查看: 8月更文挑战
复习回顾
当我们在公司使用系统时发现的bug,我们会创建一个缺陷表,缺陷表的构成如下:
- 表单标题及每一栏描述语都是Label标签组件
- Projectname及Key输入框是Entry单行输入框
- Description描述框是Text多文本输入框
- Project permission选择框是Radiobutton单选框组件
- Belong to the module多选框是CheckbuttonF复选框组件
- 最后完成填写内容后点击提交按键是Button组件
以上这些组件都是Python Tkinter提供的标准组件,继承Widget父类所有属性和相关方法。
我们上一期学习了在一组数据里可以选择一个数据的单选框组件Radiobutton。
如果,我们在一组数据里我们要选择多个数据,要是使用哪个组件呢?
本期,我们将学习可以支持多选的组件-Checkbutton相关属性和方法,Let's go~
1. Checkbutton 复选框概述
Python Tkinter 提供 Checkbutton 用于跟踪用户的选择提供给应用。
Checkbutton特点
- checkbutton可以包含文本或图像
- 主要向用户提供多选项,用户可以选择一个或多个
- Checkbutton每一个选项前面都有一个小正方形
- Checkbutton选项选中后有一个小勾☑
Checkbutton语法格式
cb = Checkbutton(master,options)
2. Checkbutton 与 Radiobutton 对比
Checkbutton 与 Radiobutton 都是为用户提供选项选择的Python Tkinter标准组件
相同点:
- Checkbutton 和 Radiobutton 都可以包含文字或者图像
- Checkbutton 和 Radiobutton 组件都只能支持单一字体文本,文本可以跨行
- Checkbutton 和 Radiobutton 组件都支持绑定事件command进行绑定
不同点:
- Checkbutton 可以支持多选项选择,Radiobutton 只支持单一选项选择
- Checkbutton 只有variable值,选中button之后variable值为Ture; Radiobutton 有value和variable属性,选中button则value值传递给variable。
3. Checkbutton 复选框常见属性
选项 | 描述 |
---|---|
activebackground | 当复选按钮位于光标下方时,它表示背景颜色 |
activeforeground | 当复选按钮位于光标下方时,它表示复选按钮的前景色 |
bg | 按钮的背景颜色 |
bitmap | 显示图像 (单色) 的按钮 |
bd | 设置边框边界的大小 |
command | 当复选按钮的状态发生更改时,它与要调用的函数相关联 |
cursor | 当鼠标指针位于复选按钮上方时,它将被更改为光标名称。 |
disableforeground | 它是用来表示禁用复选按钮的文本的颜色。 |
font | 它表示复选按钮的字体。 |
fg | 复选按钮的前景色(文本颜色)。 |
height | 它表示复选按钮的高度(行数)。默认高度为1。 |
highlightcolor | 当复选按钮处于焦点下时,焦点突出的颜色。 |
image | 用于表示复选按钮的图像。 |
justify | 如果文本包含多行,则指定文本的对齐。 |
offvalue | 如果未选中按钮,则默认将关联的控件变量设置为0。我们可以将未检查变量的状态更改为其他变量。 |
onvalue | 如果选中按钮,则默认将关联的控件变量设置为1。我们可以将已检查变量的状态更改为其他变量。 |
padx | 复选按钮的水平填充 |
pady | 复选按钮的垂直填充 |
relief | 复选按钮边框的类型。默认情况下,它被设置为FLAT |
selectcolor | 设置复选按钮时的颜色。默认情况下,它是红色的 |
selectimage | 设置好后,图像会显示在checkbutton上 |
state | 它表示复选按钮的状态。默认情况下,它被设置为normal。我们可以将其更改为禁用,使checkbutton没有响应。当复选按钮处于焦点下时,它的状态是活动的 |
underline | 它表示要加下划线的文本中字符的索引。索引从文本中的零开始 |
variable | 它表示跟踪checkbutton状态的关联变量 |
width | 它表示复选按钮的宽度。它以文本形式表示的字符数来表示 |
wraplength | 如果将此选项设置为整数,则文本将被分割为若干块 |
4. Checkbutton 复选框常见方法
方法 | 作用 |
---|---|
deselect() | 取消多选框的选择状态 |
flash() | 复选按钮在活动颜色和正常颜色之间闪烁 |
invoke () | 此方法将checkbutton进行相关联 |
select () | 它被调用来打开checkbutton |
toggle() | 它用于在不同的复选按钮之间切换 |
5. 小试牛刀
Checkbutton 组件进行练习实现效果如下:
-
首先创建“兴趣爱好调查问卷”label标签,位置位于表单顶部
Label(self, text="兴趣爱好调查问卷").pack(side="top")
-
创建Checkbutton复选框按键
self.c1 = Checkbutton(self,text = "读书") self.c2 = Checkbutton(self,text = "跑步")
-
Checkbutton选项选中的值我们要获取需要使用IntVar或者StringVar
- Checkbutton只有variable这个属性
- 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0
- 使用TKinter的IntVar或者StringVar与Checkbutton进行状态绑定,获取onvalue或者offvalue的值
self.reading = IntVar() self.running = IntVar() print(self.reading.get()) self.c1 = Checkbutton(self,text = "读书",variable = self.reading,onvalue = 1,offvalue =0) self.c2 = Checkbutton(self,text = "跑步",variable = self.running,onvalue = 1,offvalue =0) self.c1.pack(side = "left");self.c2.pack(side= "left")
-
最后创建确定按键来提交数据
Button(self,text ="确定",command =self.confirm).pack(side = "left")
-
使用GUI面向对象编程写法,使用Application(Frame)来创建实例对象,创建组件的方法封装给createWidgetCheckbutton()方法,通过构造函数创建好组件
-
完整代码如下:
from tkinter import * class Application(Frame): def __init__(self,master=None): # super()代表的是父类的定义,而不是父类对象 super().__init__(master) self.master = master self.pack() self.crateWidgetCheckbutton() def crateWidgetCheckbutton(self): Label(self, text="兴趣爱好调查问卷").pack(side="top") self.reading = IntVar() self.running = IntVar() print(self.reading.get()) self.c1 = Checkbutton(self,text = "读书",variable = self.reading,onvalue = 1,offvalue =0) self.c2 = Checkbutton(self,text = "跑步",variable = self.running,onvalue = 1,offvalue =0) self.c1.pack(side = "left");self.c2.pack(side= "left") Button(self,text ="确定",command =self.confirm).pack(side = "left") def confirm(self): # messagebox.showinfo("提示","选择的性别:"+self.v.get()) if self.reading.get() == 1: messagebox.showinfo("提示","腹有诗书气自华") if self.running.get() == 1: messagebox.showinfo("提示","运动使人年轻") root = Tk() root.geometry("300x130+200+300") root.title("MyfirstAPP") app = Application(master=root) root.mainloop()
总结
本期,我们学习 Python Tkinter 提供给用户进行选项的组件
- Radiobutton单选框,当需要在一组数据中只选择单个数据时,可以使用此组件
- Checkbutton复选框,当需要支持多选项选择,可以使用此组件。
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹