Python tkinter(5)复选框控件

阅读: 评论:0

Python tkinter(5)复选框控件

Python tkinter(5)复选框控件

目录

  • 引入
  • 创建一个复选框
  • 复选框的属性
    • 颜色
    • 字体
    • 光标
    • 状态
    • 边框
    • 能否获取焦点
    • 对齐
    • 变量
    • 自定义返回值
    • 命令
    • 修改属性
  • 方法
    • 勾选
    • 取消勾选
    • 改变状态
  • 拓展
    • 勾选/取消勾选


引入

最近有想看更新的,感谢各位的关注!刚刚初中升高中就感受到了万般忙碌,不过无论如何还是要抽空更新的啦。由于时间比较宝贵,等到文章完成还需要一年半载(真是无语,高中不允许携带手机,否则会拿处分,而且我还住校,于是只有周日可以拿到手机,除此之外周末还有一大堆作业要写),所以我决定先发布文章,后续再慢慢完善~

废话不多说,这一次我们来看看tkinter的复选框控件。

复选框控件就是一个小勾子,一共有两种主要状态——选中和非选中。点击一下,就会切换选中状态。

创建一个复选框

老样子,先制作一个窗口,然后将复选框贴到窗口上。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root)
check.pack()
root.mainloop()

复选框的属性

颜色

复选框有各种各样的颜色。颜色包括字体颜色(fgforeground)和背景颜色(bgbackground)。颜色可以用英语单词(如"red""blue")来表示,也可以用HEX格式的颜色(如"#ff00ff""#abcd00")。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World",fg="red",bg="blue")#创建一个复选框,蓝底红字
check.pack() #把输入框放到窗口上去
root.mainloop()

字体

你可以为复选框选择喜欢的字体。比如,我喜欢宋体字,希望字体大一点(25号),并且是斜体。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="你好呀同学",font=("宋体",25,"italic")) #创建一个复选框,字体为宋体,字号25,斜体
#若不需要定义字体大小和字体样式,也可以直接写为:
#check = tkinter.Checkbutton(root,font="宋体")
check.pack() #把输入框放到窗口上去
root.mainloop()

关键词样式样例
roman正体字
italic斜体字
bold粗体字
underline下划线
overstrike杠掉

光标

光标有许多种样式。内容不少,这里就稍微介绍下吧,其余的内容我找时间再专门写一篇吧。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="文本选择器",cursor="xterm") #光标放在输入框上后样式为文字选择器
check.pack() #把输入框粘到窗口上
root.mainloop()

状态

一般的tkinter控件都有2个常用的状态:正常(Normal)、禁用(Disabled),还有一些不常用的,如只读(Readonly)、活动(Active),这里只介绍Disabled和Normal吧,因为另外两个实在太不常见了。

import tkinter
root = tkinter.Tk()
check1 = tkinter.Checkbutton(root,text="Disabled",state=tkinter.DISABLED) #禁用,无法选中或取消选中
check1.pack()
check2 = tkinter.Checkbutton(root,text="Normal",state=tkinter.NORMAL) #可以进行操作
check2.pack()
root.mainloop()

边框

边框样式(relief)一共有这么几种:flatgrooveraisedridgesolidsunken,就一起来看看效果吧!

import tkinter
root = tkinter.Tk()
relief = ["flat","groove","raised","ridge","solid","sunken"] #不同的样式
for i in range(len(relief)):check = tkinter.Checkbutton(root,text=relief[i],relief=relief[i]) #各种边框的复选框check.pack() #把不同样式的复选框放在窗口上
root.mainloop()

有了边框样式,我们还可以设置边框的厚度:bdborderwidth

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello",bd=20,relief="groove") #厚厚的一层边框
check.pack() #把输入框放在窗口上
root.mainloop()

能否获取焦点

就是用户通过按Tab键能否将焦点切换到复选框上。若takefocus=False,则无法将焦点用Tab键切换到复选框上。默认takefocus=True。如:

import tkinter
root = tkinter.Tk()
check1 = tkinter.Checkbutton(root,text="Hello 1")
check1.pack()
check2 = tkinter.Checkbutton(root,text="Hello 2",takefocus=True)
check2.pack()
check3 = tkinter.Checkbutton(root,text="Hello 3",takefocus=False)
check3.pack()
root.mainloop()

可以运行一下上面的代码,试试能否用Tab键将焦点切换到第三个复选框上。

对齐

在Microsoft Office中,文字排版有三种主要的方式:靠左、居中、靠右。而在复选框中,若需要显示多行文字,也可以设置排班方式:justify

import tkinter
root = tkinter.Tk()
poem = """
静夜思
唐 李白
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
"""
check = tkinter.Checkbutton(root,text=poem,justify=tkinter.LEFT)
check.pack()
root.mainloop()

变量

复选框到底是否选中?这里,我们就需要将复选框当前状态存入一个变量中。如:

import tkinter
root = tkinter.Tk()
intvar = tkinter.IntVar()
check = tkinter.Checkbutton(root,text="Hello World!",variable=intvar)
check.pack()
())
root.mainloop()

在以上例子中,我创建了一个用于存储整数的变量,然后将变量与复选框的状态绑定在一起——简单来说,如果复选框被选中,那么<()就会返回 1 1 1,反之则返回 0 0 0。
注意调用tkinter.IntVar()等的tkinter变量容器,必须要先创建根窗口,否则会抛出异常。

自定义返回值

也可以自定义返回值:比如我想要复选框在选中的状态下返回"Yes",否则返回"No"。此时,就牵涉到onvalueoffvalue两个变量了。

import tkinter
root = tkinter.Tk()
strvar = tkinter.StringVar()
check = tkinter.Checkbutton(root,text="Hello World!",variable=strvar,onvalue="Yes",offvalue="No")
check.pack()
root.mainloop()

Tkinter有两种变量容器:tkinter.IntVartkinter.StringVar()。详细内容我可能会在后期做介绍。

命令

在点击复选框后,可以执行一段代码。举个栗子:

import tkinter
root = tkinter.Tk()
def cmd():print("Hello World!!!")
check = tkinter.Checkbutton(root,text="Hello World!",command=cmd)
check.pack()
root.mainloop()

以上代码就是,按下复选框后输出"Hello World!!!"。

修改属性

就是问一下高中的必读书,就只有《红楼梦》和《乡土中国

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World") #复选框
check.pack() #把复选框贴在窗口上
figure(font=("Consolas",50)) #将字体设置为Consolas,字体大小50,默认样式
#configure 和 config 都可以,
#fig(font=("Consolas",50)) 效果一样
root.mainloop()
属性意义
fg或foreground字体颜色
bg或background背景颜色
font字体,可以传入一个元组,也可以传入一个字符串
cursor光标放置在输入框上时的样式
state复选框状态,如禁用(Disabled),正常(Normal)
relief边框样式
justify对齐方式
bd或borderwidth边框粗细
takefocus是否可以获取焦点
variable转存状态变量
onvalue被选中时的返回值
offvalue未勾选时的返回值
command按下复选框后调用命令

方法

勾选

调用check.select()即可勾选中该复选框。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World")
check.pack()
check.select()
root.mainloop()

取消勾选

和勾选相反,调用check.deselect()即可。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World")
check.pack()
check.deselect()
root.mainloop()

改变状态

调用会改变当前复选框的状态。即,如果复选框当前状态是勾选状态,那么就会被取消勾选;如果当前没有勾选,就会勾选复选框。

import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World")
check.pack()
le()
root.mainloop()

拓展

勾选/取消勾选

勾选和取消勾选的方式其实不止一种。对于设置了状态转存变量的复选框来说,还可以通过改变变量的方式来设置勾选状态。如:

import tkinter
root = tkinter.Tk()
intvar = tkinter.IntVar()
check = tkinter.Checkbutton(root,text="Hello World!",variable=intvar)
check.pack()
intvar.set(1)
root.mainloop()

同理,intvar.set(0)也可以取消勾选。

本文发布于:2024-02-01 22:12:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170679675239754.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控件   复选框   Python   tkinter
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23