目录
Button
Button 组件的绝大多数选项是和 Label 一样的,不过 Button 有一个功能就是接受用户的信息。Button 组件可以通过按钮上的文字和图标告诉用户按下去会发生什么,有什么功能。
Button 组件有一个叫做 command 的选项,用于指定一个函数或者方法。当用户点下按钮的时候,tkinter 就会自动的去调取这个函数或者方法。
添加一个按钮,在按钮被按下的时候将 Label 文本改变。想要文本发生改变,只需要设置一个 textvariable 的选项就可以了。
Checkbutton
Checkbutton 可实现复选选的效果
import tkinter
def pyCheckbutton():
root = tkinter.Tk()
v = tkinter.IntVar() #需要一个tk变量,用于表示按钮是否被选中。默认情况下,未选中是0,选中是1
c = tkinter.Checkbutton(root, text='测试一下', variable=v) #variable用来表示按钮的状态(是否被按下)
c.pack()
l = tkinter.Label(root, textvariable=v) #为了更直观的看出选中和未选中v的表现状态,可以将其显示在Label标签里
l.pack()
root.mainloop()
def pyCheckbutton2():
root = tkinter.Tk()
ALARMS = ['断站告警', '小区告警', '高频告警', '移网月报']
#每一个按钮都需要一个存放变量的,所以这里用列表。后面用循环来添加
v = []
for alarm in ALARMS:
#每一次都需要一个整形的tk变量用于每个存放按钮的状态,再追加到列表里去
v.append(tkinter.IntVar())
#依次显示每个girl的名字。每一次都要拿到最后一个元素,因此是-1
b = tkinter.Checkbutton(root, text=alarm, variable=v[-1])
#所有的Checkbutton左对齐。anchor用于指定显示位置,可以设置为N W S E NW WS SE EN(东南西北英文缩写) CENTER九个不同的值
b.pack(anchor=tkinter.W)
tkinter.mainloop()
Radiobutton
Radiobutton 实现单选的效果,即互斥的效果。同一组内,所有的 Radiobutton 只能共享一个 variable 这个选项,并且要设置不同的 value 的值。当存在多个选项的时候,使用循环会更加简洁。
import tkinter
def pyRadiobutton():
root = tkinter.Tk()
#多个按钮只需要一个变量
v = tkinter.IntVar()
#variable只能是同一个变量。value的值必须不同才能互斥
tkinter.Radiobutton(root, text='小区告警', variable=v, value=1).pack(anchor=tkinter.W)
tkinter.Radiobutton(root, text='断站告警', variable=v, value=2).pack(anchor=tkinter.W)
tkinter.Radiobutton(root, text='高频告警', variable=v, value=3).pack(anchor=tkinter.W)
#原理是每一次点中一个按钮,会把value的值给v,给这个v说明点中了。再和其他的value值对比,都不是2,因此不显示
tkinter.mainloop()
def pyRadiobutton2():
root =tkinter.Tk()
#多个按钮只需要一个变量
v = tkinter.IntVar()
LANGS = [
('小区告警', 1),
('断站告警', 2),
('高频告警', 3),
('告警分析', 4)]
v = tkinter.IntVar()
v.set(1)
for lang, num in LANGS:
#indicatoron=False改变前面的小圆点为按钮形式
b = tkinter.Radiobutton(root, text=lang, variable=v, value=num, indicatoron=False)
#X是横向填充,Y是纵向填充
b.pack(fill=tkinter.X)
tkinter.mainloop()