Tkinter Menu add_checkbutton
在设计菜单列表时,也可以将命令用复选框(checkbutton)方式表示,也称为Check menu button,下面将用程序实例讲解。
示例1程序实例在执行时,在窗口下方可以看到状态栏,View菜单中的Status其实就是用的复选框命令。
上述工作原理是当Status状态为True时,Status左边可以有勾选符号,同时窗口下方会有状态栏,可参考上方左图。当Status状态是False时,左边没有勾选符号,同时窗口下方不会有状态栏,可参考上方右图。Check menu button的工作原理和Widget对象Checkbutton相同,单击可以切换状态是True或False。
示例1
设计当Status为True时可以显示状态栏,当Status为False时可以隐藏状态栏,这个程序的状态栏是用标签Label方式处理,可以参考第30~34行。
from tkinter import *
def status():
if demoStatus.get():
statusLabel.pack(side=BOTTOM,fill=X)
else:
statusLabel.pack_forget() # 隐藏标签状态栏
root = Tk()
root.title("apidemos.com")
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单类别命名为File
filemenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="File",menu=filemenu)
# 在File菜单内建立菜单列表Exit
filemenu.add_command(label="Exit",command=root.destroy)
# 建立菜单类别对象,并将此菜单类别命名为View
viewmenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="View",menu=viewmenu)
# 在View菜单内创建Check menu button
demoStatus = BooleanVar()
demoStatus.set(True)
viewmenu.add_checkbutton(label="Status",command=status,
variable=demoStatus) # demoStatus状态改变时会调用status函数
root.config(menu=menubar)
statusVar = StringVar()
statusVar.set("Show")
statusLabel = Label(root,textvariable=statusVar,relief="raised")
statusLabel.pack(side=BOTTOM,fill=X)
root.mainloop()
输出:
上述程序的重点如下,第26~27行在View菜单内使用add_checkbutton( )创建Check menu button,此对象名称是Status,同时使用demoStatus布尔变量记录目前状态是True或False,这个Status对象当有状态改变时会执行status( )方法。
在第4~8行的status( )方法中如果目前demoStatus是True,执行第6行包装显示窗口的标签状态栏,相当于显示statusLabel。如果目前demoStatus是False,执行第8行的statusLabel.pack_forget( ),这个方法可以隐藏标签状态栏。