Dans le menu de Tkinter, vous pouvez le rendre joli en spécifiant l'option d'accélérateur lors de l'ajout d'un bouton de menu avec des commandes, mais en réalité, cela seul n'active pas les raccourcis clavier. Un travail de liaison avec la méthode est nécessaire. Voici un exemple pour cela.
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 est associé à l'application avec self.bind_all. L'événement est passé en argument lors de l'exécution de onOpen avec un raccourci clavier, mais pas lorsque le bouton de menu est cliqué directement. Par conséquent, la valeur initiale de l'événement est définie sur Aucun pour correspondre à ce dernier. Si c'est un problème, définissons-le séparément.
Recommended Posts