zoukankan      html  css  js  c++  java
  • Tkinter的Menu组件

    Menu:菜单控件;显示菜单栏,下拉菜单和弹出菜单

    一、基本使用

    1、制作顶级菜单

    代码如下:

    # coding:utf8
    from tkinter import *
    # 制作菜单
    
    
    class App:
        def __init__(self, master):
            # 实例化一个Menu对象
            menubar = Menu(master)
    
            def callback():
                print("你好")
            # 添加两个顶级菜单
            menubar.add_command(label="hello", command=callback)
            menubar.add_command(label="退出", command=root.quit)
            # 绑定
            master.config(menu=menubar)
    
    
    root = Tk()
    win = App(root)
    root.mainloop()

    效果如下:

    image

    2、制作下拉菜单

    代码如下:

    # coding:utf8
    from tkinter import *
    # 制作下拉菜单
    
    
    class App:
        def __init__(self, master):
            # 实例化一个Menu对象
            menubar = Menu(master)
    
            # 文件操作组件 创建一个filemenu组,然后添加子菜单
            filemenu = Menu(menubar, tearoff=False)
            filemenu.add_command(label="打开")
            filemenu.add_command(label="保存")
            filemenu.add_command(label="另存为")
            # 分割线,中间会有一条线
            filemenu.add_separator()
            filemenu.add_command(label="退出", command=master.quit)
            # 为filemenu绑定框架标签
            menubar.add_cascade(label="文件", menu=filemenu)
    
            # 颜色设置组件, 创建一个editmenu组,然后添加子菜单
            editmenu = Menu(menubar, tearoff=False)
            editmenu.add_command(label="字体颜色")
            editmenu.add_command(label="背景颜色")
            # 为editmenu绑定框架标签
            menubar.add_cascade(label="颜色设置", menu=editmenu)
            # 绑定
            master.config(menu=menubar)
    
    
    root = Tk()
    win = App(root)
    root.mainloop()

    效果如下:

    image

    下拉菜单可以设置对应函数,本程序只对退出菜单指定了函数。

    3、制作弹出菜单

    代码如下:

    # coding:utf8
    from tkinter import *
    # 制作右键弹出菜单
    
    
    class App:
        def __init__(self, master):
            frame = Frame(master, width=500, height=500)
            frame.pack()
    
            # 实例化一个Menu对象,tearoff=False 不分离菜单
            menubar = Menu(master, tearoff=False)
            # 添加三个菜单
            menubar.add_command(label="复制")
            menubar.add_command(label="粘贴")
            menubar.add_command(label="退出", command=root.quit)
    
            # 事件绑定 右键在当前位置弹出菜单
            def popup(event):
                menubar.post(event.x_root, event.y_root)
            frame.bind("<Button-3>", popup)
    
    
    root = Tk()
    win = App(root)
    root.mainloop()

    效果如下:

    image

    鼠标移动到框架内,点击右键,即可在当前位置弹出菜单。

    事件绑定不明白的,等学到了事件绑定就明白了,Button-3鼠标右键。

    menubar对象的post方法可以在给定位置抛出菜单。


    读书和健身总有一个在路上

  • 相关阅读:
    Data Block Structure (Try to Understand...)
    Some pieces of "Scripting"
    奥数模块之小学一年级版
    mysql 新增索引 sql
    mysql 导出数据 每个表的前n条数据 mysqldump limit
    Servlet的urlpattern详解(转)
    过滤器与拦截器的区别(转)
    用csv导出文件时,每个cell加上双引号后,可以原样输入cell中的内容,不管是否cell中是否包含逗号或者换行,但是如果包含双引号,则换行失效,解决方法如下
    java.lang.OutOfMemoryError: Java heap space 和 java.lang.OutOfMemoryError: PermGen space 解决方法
    解决 eclipse svn插件 状态图标不显示
  • 原文地址:https://www.cnblogs.com/Renqy/p/12840799.html
Copyright © 2011-2022 走看看