Im Menü von Tkinter können Sie es schön aussehen lassen, indem Sie die Beschleunigeroption angeben, wenn Sie eine Menüschaltfläche mit Befehlen hinzufügen. In Wirklichkeit werden jedoch keine Tastaturkürzel aktiviert. Die Verknüpfung mit der Methode ist erforderlich. Hier ist ein Beispiel dafür.
import tkinter as tk
from tkinter import ttk
class Application(tk.Frame):
def __init__(self,master):
super().__init__(master)
self.pack()
self.master.geometry("300x300")
self.master.title("Menubar Sample")
self.create_menubar()
def create_menubar(self):
menubar = tk.Menu(self)
file_menu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=self.onOpen, accelerator="Ctrl+O")
self.master.config(menu=menubar)
self.bind_all("<Control-o>", self.onOpen)
def onOpen(self, event=None):
print("onOpen")
def main():
root = tk.Tk()
app = Application(master=root)
app.mainloop()
if __name__ == "__main__":
main()
OnOpen ist der Anwendung mit self.bind_all zugeordnet. Das Ereignis wird als Argument übergeben, wenn onOpen mit einer Tastenkombination ausgeführt wird, jedoch nicht, wenn direkt auf die Menüschaltfläche geklickt wird. Daher wird der Anfangswert des Ereignisses auf Keine gesetzt, um dem letzteren zu entsprechen. Wenn dies ein Problem ist, definieren wir es separat.
Recommended Posts