2010-08-14 80 views
16

Me gustaría tener un menú desplegable en Tkinter, que incluya la tecla de acceso directo asociada con este comando. es posible?Menú desplegable de Tkinter con atajos de teclado?

¿Cómo también podría agregar el subrayado bajo un cierto carácter, para permitir Alt-F-S (Archivo-> Guardar)?

Respuesta

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

Gracias, ¿cómo encontraste eso? – skeggse

+8

@CMC: No lo encontré, lo sé. He estado desarrollando Tk con Tcl desde el '95 y traducir ese conocimiento a python es muy directo. –

+0

Oh, está bien. Además, ¿cómo destacaría un elemento del menú de caracteres? selection_present devuelve True/False, pero quiero algo así como una 2-tupla que contenga los valores de inicio y final, o el texto seleccionado. – skeggse

-1

Tal

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) 
Cuestiones relacionadas