2012-04-09 12 views
2

Unten ist ein Beispiel Code, alles funktioniert so weit wie das Menü, und die GUI für die Funktion, aber die Funktion funktioniert nicht, wenn Sie Werte übergeben, wenn was ich es tun will, ist die Berechnung Problem, wie es entworfen wurde.Python Tkinter Menüleiste

Ich möchte die Funktion ein separates Programm, um das Hauptfenster, wie es ist. Der Grund ist, ich möchte mehr von diesen mathematischen Funktionen zu einem Menü hinzufügen.

Wie kann ich diese Funktion erhalten? Ich bin neu, gehen Sie einfach bitte .... Danke im voraus ...

from Tkinter import * 
import ttk 


def DVT(): 
    def dvt(*args): 
     """This Function will determine distance in feet from a constant velocity and time""" 
     try: 
      val1 = float(vel.get()) 
      val2 = float(tme.get()) 
      dist.set(val1 * val2) 
     except ValueError: 
      pass 

    root = Tk() 
    root.title('Distance from Velocity and Time') 

    mainframe = ttk.Frame(root, padding="3 3 12 12") 
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
    mainframe.columnconfigure(0, weight = 1) 
    mainframe.rowconfigure(0, weight=1) 

    vel = StringVar() 
    tme = StringVar() 
    dist = StringVar() 

    vel_entry = ttk.Entry(mainframe, width=7, textvariable=vel) 
    vel_entry.grid(column=2, row=1, sticky=(E, W)) 
    tme_entry = ttk.Entry(mainframe, width=7, textvariable=tme) 
    tme_entry.grid(column=2, row=2, sticky=(E, W)) 

    ttk.Label(mainframe, textvariable=dist).grid(column=2, row=3, sticky=(W, E)) 
    ttk.Button(mainframe, text="Calculate", command=dvt).grid(column=3, row=2, sticky=W) 
    ttk.Label(mainframe, text="Velocity").grid(column=1, row=1, sticky=(W, E)) 
    ttk.Label(mainframe, text="Time").grid(column=1, row=2, sticky=W) 
    ttk.Label(mainframe, text="The Distance is:").grid(column=1, row=3, sticky=E) 

    for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5) 

    vel_entry.focus() 
    tme_entry.focus() 
    root.bind('<Return>', dvt) 
    root.mainloop() 


root = Tk() 
menubar = Menu(root) 


vel = StringVar() 
tme = StringVar() 
dist = StringVar() 


filemenu = Menu(menubar, tearoff=0) 
filemenu.add_command(label="Distance from Velocity and Time", command=DVT) 

filemenu.add_separator() 

filemenu.add_command(label="Exit", command=root.quit) 
menubar.add_cascade(label="File", menu=filemenu) 
editmenu = Menu(menubar, tearoff=0) 


editmenu.add_separator() 

root.config(menu=menubar) 
root.mainloop() 

Antwort

2
from Tkinter import * 
import ttk 
import tkMessageBox 

def DVT(): 

    vel = StringVar() 
    tme = StringVar() 
    dist = StringVar() 

    def dvt(): 
     """This Function will determine distance in feet from a constant velocity and time""" 
     try: 
      val1 = float(vel_entry.get()) 
      val2 = float(tme_entry.get()) 
      dist.set(val1 * val2) 
      tkMessageBox.showinfo(None,"The Distance is: " + dist.get()) 
     except ValueError as v: 
      pass 


    root = Tk() 
    root.title('Distance from Velocity and Time') 

    mainframe = ttk.Frame(root, padding="3 3 12 12") 
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
    mainframe.columnconfigure(0, weight = 1) 
    mainframe.rowconfigure(0, weight=1) 


    vel_entry = ttk.Entry(mainframe, width=7) 
    vel_entry.grid(column=2, row=1, sticky=(E, W)) 
    tme_entry = ttk.Entry(mainframe, width=7) 
    tme_entry.grid(column=2, row=2, sticky=(E, W)) 


    ttk.Button(mainframe, text="Calculate", command=dvt).grid(column=3, row=2, sticky=W) 
    ttk.Label(mainframe, text="Velocity").grid(column=1, row=1, sticky=(W, E)) 
    ttk.Label(mainframe, text="Time").grid(column=1, row=2, sticky=W) 
    ttk.Label(mainframe, text="The Distance is:").grid(column=1, row=3, sticky=E) 

    for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5) 

    vel_entry.focus() 
    tme_entry.focus() 
    root.bind('<Return>', dvt) 
    root.mainloop() 

root = Tk() 
menubar = Menu(root) 

filemenu = Menu(menubar, tearoff=0) 
filemenu.add_command(label="Distance from Velocity and Time", command=DVT) 

filemenu.add_separator() 

filemenu.add_command(label="Exit", command=root.quit) 
menubar.add_cascade(label="File", menu=filemenu) 
editmenu = Menu(menubar, tearoff=0) 


editmenu.add_separator() 

root.config(menu=menubar) 
root.mainloop() 
+5

Könnten Sie diese Antwort bearbeiten Sie den Code zu erklären, und warum gilt es? –

+0

vielen dank !!!! – tjrob

+1

@tjrob Wenn diese Antwort hilfreich ist, können Sie "akzeptieren" in Betracht ziehen (kreuzen Sie das Kreuz an, um es grün zu machen). Siehe http://stackoverflow.com/faq#reputation – FabienAndre