2010-08-14 3 views
16

Ich hätte gerne ein Dropdown-Menü in Tkinter, das die mit diesem Befehl verknüpfte Tastenkombination enthält. Ist das möglich?Tkinter Dropdown-Menü mit Tastenkombinationen?

Wie würde ich auch die Unterstreichung unter einem bestimmten Zeichen hinzufügen, um Alt-F-S (Datei-> Speichern) zu ermöglichen?

Antwort

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

Danke, wie hast du das finden? – skeggse

+8

@CMC: Ich habe es nicht gefunden, ich weiß es. Ich habe seit 1995 Tk-Entwicklung mit Tcl gemacht und dieses Wissen in Python übersetzt, ist sehr geradlinig. –

+0

Oh, okay. Wie würde ich einen Charaktermenüpunkt unterstreichen? selection_present gibt True/False zurück, aber ich möchte etwas wie ein 2-Tupel mit den Start- und Endwerten oder dem ausgewählten Text. – skeggse

-1

Vielleicht

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)