首页 > 其他 > 详细

tkinter之菜单Menu

时间:2021-06-15 16:09:58      阅读:24      评论:0      收藏:0      [点我收藏+]

1、基本用法

Menu() 创建菜单

add_command() 添加命令label

from tkinter import *
from tkinter import messagebox


def do(name):
    messagebox.showinfo(提示信息, f你点击了{name})


win = Tk()  # 窗口
menu_main = Menu(win)  # 创建主菜单
menu_sub = Menu(menu_main)  # 创建子菜单
menu_sub.add_command(label=子菜单1, command=lambda x=子菜单1: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单2, command=lambda x=子菜单2: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单3, command=lambda x=子菜单3: do(x))  # 一个子菜单
menu_main.add_cascade(label=主菜单, menu=menu_sub)  # 添加子菜单到主菜单
win.config(menu=menu_main)  # 设置主菜单到界面
win.mainloop()

运行截图

技术分享图片技术分享图片技术分享图片

 2、多个主菜单

from tkinter import *
from tkinter import messagebox


def do(name):
    messagebox.showinfo(提示信息, f你点击了{name})


win = Tk()  # 窗口
menu = Menu(win)  # 创建主菜单
menu_main = Menu(menu)  # 创建主菜单1
menu_main.add_command(label=子菜单a, command=lambda: do(子菜单a))  # 子菜单
menu_main.add_command(label=子菜单b, command=lambda: do(子菜单b))  # 子菜单
menu_main.add_command(label=子菜单c, command=lambda: do(子菜单c))  # 子菜单

menu_main2 = Menu(menu)  # 创建主菜单2
menu_main2.add_command(label=子菜单A, command=lambda: do(子菜单A))  # 子菜单
menu_main2.add_command(label=子菜单B, command=lambda: do(子菜单B))  # 子菜单
menu_main2.add_command(label=子菜单C, command=lambda: do(子菜单C))  # 子菜单

menu.add_cascade(label=主菜单1, menu=menu_main)  # 添加主菜单1到主菜单上
menu.add_cascade(label=主菜单2, menu=menu_main2)  # 添加主菜单2到主菜单上
win.config(menu=menu)  # 设置主菜单到界面
win.mainloop()

运行截图

技术分享图片技术分享图片

 3、二级子菜单(多级子菜单同理)

from tkinter import *
from tkinter import messagebox


def do(name):
    messagebox.showinfo(提示信息, f你点击了{name})


win = Tk()  # 窗口
menu = Menu(win)  # 创建主菜单
menu_main = Menu(menu)  # 创建主菜单1
menu_main.add_command(label=子菜单a, command=lambda: do(子菜单a))  # 子菜单
menu_main.add_command(label=子菜单b, command=lambda: do(子菜单b))  # 子菜单
menu_main.add_command(label=子菜单c, command=lambda: do(子菜单c))  # 子菜单

menu_main2 = Menu(menu)  # 创建主菜单2
menu_main2.add_command(label=子菜单A, command=lambda: do(子菜单A))  # 子菜单
menu_main2.add_command(label=子菜单B, command=lambda: do(子菜单B))  # 子菜单
menu_main2.add_command(label=子菜单C, command=lambda: do(子菜单C))  # 子菜单

menu_main21 = Menu(menu_main2)  # 创建主菜单21
menu_main21.add_command(label=子菜单1, command=lambda: do(子菜单1))  # 子菜单
menu_main21.add_command(label=子菜单2, command=lambda: do(子菜单2))  # 子菜单
menu_main21.add_command(label=子菜单3, command=lambda: do(子菜单3))  # 子菜单
menu_main2.add_cascade(label=子菜单D, menu=menu_main21)

menu.add_cascade(label=主菜单1, menu=menu_main)  # 添加主菜单1到主菜单上
menu.add_cascade(label=主菜单2, menu=menu_main2)  # 添加主菜单2到主菜单上
win.config(menu=menu)  # 设置主菜单到界面
win.mainloop()

运行截图

技术分享图片技术分享图片

4、添加分隔符

使用add_separator()添加分隔符

from tkinter import *
from tkinter import messagebox


def do(name):
    messagebox.showinfo(提示信息, f你点击了{name})


win = Tk()  # 窗口
menu_main = Menu(win)  # 创建主菜单
menu_sub = Menu(menu_main)  # 创建子菜单
menu_sub.add_command(label=子菜单1, command=lambda x=子菜单1: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单2, command=lambda x=子菜单2: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单3, command=lambda x=子菜单3: do(x))  # 一个子菜单
menu_sub.add_separator()
menu_sub.add_command(label=子菜单4, command=lambda x=子菜单4: do(x))  # 一个子菜单
menu_main.add_cascade(label=主菜单, menu=menu_sub)  # 添加子菜单到主菜单
win.config(menu=menu_main)  # 设置主菜单到界面
win.mainloop()

运行截图

技术分享图片

 5、去掉虚线

上面的例子中每个主菜单或子菜单都有一个虚线,可以通过设置tearoff=0去掉。

虚线的意思是菜单是否可以独立出来为一个窗口显示,如果设置tearoff=0,表示不可以独立出来,设置tearoff=1,表示可以独立出来。

点击虚线,菜单就独立出来了

from tkinter import *
from tkinter import messagebox


def do(name):
    messagebox.showinfo(提示信息, f你点击了{name})


win = Tk()  # 窗口
menu_main = Menu(win)  # 创建主菜单
menu_sub = Menu(menu_main, tearoff=0)  # 创建子菜单
menu_sub.add_command(label=子菜单1, command=lambda x=子菜单1: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单2, command=lambda x=子菜单2: do(x))  # 一个子菜单
menu_sub.add_command(label=子菜单3, command=lambda x=子菜单3: do(x))  # 一个子菜单
menu_sub.add_separator()
menu_sub.add_command(label=子菜单4, command=lambda x=子菜单4: do(x))  # 一个子菜单
menu_main.add_cascade(label=主菜单, menu=menu_sub)  # 添加子菜单到主菜单
win.config(menu=menu_main)  # 设置主菜单到界面
win.mainloop()

运行截图(去掉虚线,菜单不可独立出来,左图)(菜单独立出来效果截图,中图和右图)

技术分享图片技术分享图片技术分享图片

 

tkinter之菜单Menu

原文:https://www.cnblogs.com/rainbow-tan/p/14885095.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!