最近有想看更新的,感谢各位的关注!刚刚初中升高中就感受到了万般忙碌,不过无论如何还是要抽空更新的啦。由于时间比较宝贵,等到文章完成还需要一年半载(真是无语,高中不允许携带手机,否则会拿处分,而且我还住校,于是只有周日可以拿到手机,除此之外周末还有一大堆作业要写),所以我决定先发布文章,后续再慢慢完善~
废话不多说,这一次我们来看看tkinter的复选框控件。
复选框控件就是一个小勾子,一共有两种主要状态——选中和非选中。点击一下,就会切换选中状态。
老样子,先制作一个窗口,然后将复选框贴到窗口上。
import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root)
check.pack()
root.mainloop()
复选框有各种各样的颜色。颜色包括字体颜色(fg
或foreground
)和背景颜色(bg
或background
)。颜色可以用英语单词(如"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
)一共有这么几种:flat
、groove
、raised
、ridge
、solid
、sunken
,就一起来看看效果吧!
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()
有了边框样式,我们还可以设置边框的厚度:bd
或borderwidth
。
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()
print(intvar.get())
root.mainloop()
在以上例子中,我创建了一个用于存储整数的变量,然后将变量与复选框的状态绑定在一起——简单来说,如果复选框被选中,那么intvar.get()
就会返回 1 1 1,反之则返回 0 0 0。
注意调用tkinter.IntVar()
等的tkinter变量容器,必须要先创建根窗口,否则会抛出异常。
也可以自定义返回值:比如我想要复选框在选中的状态下返回"Yes",否则返回"No"。此时,就牵涉到onvalue
和offvalue
两个变量了。
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.IntVar
和tkinter.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() #把复选框贴在窗口上
check.configure(font=("Consolas",50)) #将字体设置为Consolas,字体大小50,默认样式
#configure 和 config 都可以,
#check.config(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()
调用check.toggle()
会改变当前复选框的状态。即,如果复选框当前状态是勾选状态,那么就会被取消勾选;如果当前没有勾选,就会勾选复选框。
import tkinter
root = tkinter.Tk()
check = tkinter.Checkbutton(root,text="Hello World")
check.pack()
check.toggle()
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)
也可以取消勾选。