pythonpython-3.xtkintertkinter-menu

How to activate tkinter menu and toolbar with keyboard shortcut/binding?


I have a file menu in tkinter and when I click on it a file menu opens. I also want the menu to open with a keyboard short-cut like "alt+f" for example instead of clicking it.

Here is the code:

def Open_FileMenu_With_KeyboardShortcut():
    pass
    # How would I make the file menu appear when I click "Alt+f"
root.bind("<the code for alt-f>", Open_FileMenu_With_KeyboardShortcut)

# File Option for Menu Bar 
FileOption = Menu(MenuBar, tearoff=False)
MenuBar.add_cascade(label="File", menu=FileOption, underline=0)
FileOption.config(bg="White", fg="Black", activebackground="Whitesmoke", activeforeground="Black", activeborderwidth=1, font=('Monaco', 11))
# New Option for File Option
NewMenu = Menu(FileOption, tearoff=False)
NewMenu.config(bg="White", fg="Black", activebackground="Whitesmoke", activeforeground="Black", activeborderwidth=1, font=('Monaco', 11))
NewMenu.add_command(label="New File", command=NewFile)
NewMenu.add_command(label="From Template", command=None)
# Cascade the New menu to the File Menu
FileOption.add_cascade(label="New", menu=NewMenu)
# The remaining settings options
FileOption.add_command(label="Open File", command=OpenFile, accelerator="Ctrl+O")
FileOption.add_command(label="Open Folder", command=None, accelerator="Ctrl+Shift+O")  
FileOption.add_command(label="Open Recent", command=None)
FileOption.add_separator()
FileOption.add_command(label="Save File", command=SaveFile, accelerator="Ctrl+S")
FileOption.add_command(label="Save As", command=SaveFileAs, accelerator="Ctrl+Shift+S")
FileOption.add_separator()
FileOption.add_command(label="Revert File", commmand=None)
FileOption.add_command(label="Close Editor", command=None, accelerator="Ctrl+W")
FileOption.add_separator()
FileOption.add_command(label="Quit", command=QuitApplication, accelerator="Ctrl+q")

How would I open the file menu with the keyboard shortcut?


Solution

  • I am not 100% sure what the question is asking but from my understanding of the question, this should work:

    import tkinter as tk
    
    root = tk.Tk()
    
    MenuBar = tk.Menu(root, tearoff=False) # Create the main menu
    root.config(menu=MenuBar) # Assign it to the root
    
    # File Option for Menu Bar 
    FileOption = tk.Menu(MenuBar, tearoff=False)
    MenuBar.add_cascade(label="File", menu=FileOption, underline=0)
    ...
    FileOption.add_command(label="Quit", command=exit, accelerator="Ctrl+q")
    

    Pressing Alt and f at the same time will open the file menu.