【问题标题】:Tkinter - How to create submenus in menubarTkinter - 如何在菜单栏中创建子菜单
【发布时间】:2013-12-24 03:09:53
【问题描述】:

有可能吗?通过查看我很难过的选项。在网上搜索并没有把我带到任何地方。我可以在菜单栏中创建一个子菜单吗?我指的是当我单击文件并转到最近的文件时执行类似于 Idle Shell 的操作,它会拉出一个单独的文件,显示我最近打开的文件。

如果不可能,我必须用什么来让它工作?

【问题讨论】:

    标签: python tkinter python-3.3 submenu menubar


    【解决方案1】:

    您完全按照将菜单添加到菜单栏的方式进行操作,使用add_cascade。这是一个例子:

    # Try to import Python 2 name
    try:
        import Tkinter as tk
    # Fall back to Python 3 if import fails
    except ImportError:
        import tkinter as tk
    
    class Example(tk.Frame):
        def __init__(self, root):
            tk.Frame.__init__(self, root)
            menubar = tk.Menu(self)
            fileMenu = tk.Menu(self)
            recentMenu = tk.Menu(self)
    
            menubar.add_cascade(label="File", menu=fileMenu)
            fileMenu.add_cascade(label="Open Recent", menu=recentMenu)
            for name in ("file1.txt", "file2.txt", "file3.txt"):
                recentMenu.add_command(label=name)
    
    
            root.configure(menu=menubar)
            root.geometry("200x200")
    
    if __name__ == "__main__":
        root = tk.Tk()
        Example(root).pack(fill="both", expand=True)
        root.mainloop()
    

    【讨论】:

    • 谢谢。它有效,但我如何摆脱主菜单和子菜单之上的--------打破。
    • 使用选项tearoff=False
    • 几天前我在 youtube 视频系列中看到了这一点,但没有意识到 ------- 与撕下相关。由于做了更多的研究,我刚刚看到了答案。感谢您的帮助。
    【解决方案2】:
    my_menu=Menu(root) # for creating the menu bar
    m1=Menu(my_menu,tearoff=0)  # tear0ff=0 will remove the tearoff option ,its default 
    value is 1 means True which adds a  tearoff line
    m1.add_command(label="Save",command=saveCommand)
    m1.add_command(label="Save As",command=saveAsCommand)
    m1.add_command(label="Print",command=printCommand)
    m1.add_separator()  # this adds a separator line --this is used  keep similar options 
    together
    m1.add_command(label="Refresh",command=refreshCommand)
    m1.add_command(label="Open",command=openCommand)
    
    my_menu.add_cascade(label="File",menu=m1)
    
    m2 = Menu(my_menu)
    m2.add_command(label="Copy all",command=copyAllCommand)
    m2.add_command(label="Clear all",command=clearAllCommand)
    m2.add_command(label="Undo",command=undoCommand)
    m2.add_command(label="Redo",command=redoCommand)
    m2.add_command(label="Delete",command=deleteCommand)
    
    my_menu.add_cascade(label="Edit",menu=m2)
    
    #all the values in command attribute are functions
    my_menu.add_command(label="Exit", command=quit)
    
    root.config(menu=my_menu)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2017-12-24
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多