2010-08-14 7 views
16

Je voudrais avoir un menu déroulant dans Tkinter, qui inclut la touche de raccourci associée à cette commande. Est-ce possible?Tkinter dropdown Menu avec des raccourcis clavier?

Comment ajouter le soulignement sous un certain caractère, pour autoriser Alt-F-S (Fichier-> Enregistrer)?

Répondre

34
import tkinter as tk 
import sys 

class App(tk.Tk): 

    def __init__(self): 
     tk.Tk.__init__(self) 
     menubar = tk.Menu(self) 
     fileMenu = tk.Menu(menubar, tearoff=False) 
     menubar.add_cascade(label="File", underline=0, menu=fileMenu) 
     fileMenu.add_command(label="Exit", underline=1, 
          command=quit, accelerator="Ctrl+Q") 
     self.config(menu=menubar) 

     self.bind_all("<Control-q>", self.quit) 

    def quit(self, event): 
     print("quitting...") 
     sys.exit(0) 

if __name__ == "__main__": 
    app = App() 
    app.mainloop() 
+0

Merci, comment avez-vous trouvé? – skeggse

+8

@CMC: Je ne l'ai pas trouvé, je le sais. Je fais le développement de Tk avec Tcl depuis '95 et la traduction de ces connaissances en python est très simple. –

+0

Oh, d'accord. Aussi, comment souligner un élément de menu de personnage? selection_present renvoie Vrai/Faux, mais je veux quelque chose comme un 2-tuple contenant les valeurs de début et de fin, ou le texte sélectionné. – skeggse

-1

Peut-être

from tkinter import * 
import tkinter.filedialog as filed 

root = Tk() 
root.title("My Python Tkinter Application") 
root.minsize(800,600) 

def openfile(): 
    fn = filed.askopenfilename(filetypes=[("Text Files","*.txt")], title="Open File") 
    f = open(fn, "r").read() 
    print(f) 

def init(): 
    menu = Menu(root) 
    filemenu = Menu(menu) 
    filemenu.add_command(label="Open (⌘O)", command=openfile) 
    menu.add_cascade(label="File", menu=filemenu) 
    root.config(menu=menu) 
def key(): 
    print("Key Pressed: "+repr(event.char)) 
root.bind("<Key>", key)