2016-07-29 5 views
-1

Im sehr neu zu machen GUI in Python und ich habe überall gesucht, aber nicht finden, was ich suche. Ich möchte einfach ein Programm haben, bei dem der Benutzer einen Radius eingibt und das Programm den Bereich dieses Radius in einem Etikett ausdruckt, entweder mit einem Klick oder mit der Taste. Vielen Dank im Voraus :)Python, wie man Code zur GUI einführt

import Tkinter, math 

class calc_tk(Tkinter.Tk): 
def __init__(self,parent): 
    Tkinter.Tk.__init__(self,parent) 
    self.parent = parent 
    self.initialize() 

def initialize(self): 
    self.grid() 

    self.entryVariable = Tkinter.DoubleVar() 
    self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
    self.entry.grid(column=0,row=0,sticky='EW') 
    self.entry.bind("<Return>", self.OnPressEnter) 
    self.entryVariable.set(u"Radius") 

    button = Tkinter.Button(self,text=u"Click to convert",command=self.OnButtonClick) 
    button.grid(column=1,row=0) 

    self.labelVariable = Tkinter.StringVar() 
    label = Tkinter.Label(self,textvariable=self.labelVariable,anchor="w",fg="white",bg="gray") 
    label.grid(column=0,row=1,columnspan=2,sticky='EW') 
    self.labelVariable.set(u"Please enter a radius.") 

    self.grid_columnconfigure(0,weight=1) 
    self.resizable(True,False) 
    self.update() 
    self.geometry(self.geometry())  
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def OnButtonClick(self): 
    self.labelVariable.set(self.convertVariable.get()) 
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def OnPressEnter(self,event): 
    self.converter() 
    self.labelVariable.set(self.convertVariable.get()) 
    self.entry.focus_set() 
    self.entry.selection_range(0, Tkinter.END) 

def converter(self): 
    self.convertVariable(math.pi * self.entryVariable.get()**2) 

if __name__ == "__main__": 
app = calc_tk(None) 
app.title('Radius Converter') 
app.mainloop() 
+0

Was mit falsch ist, was Sie haben? – zondo

+0

alles, aber der "def-Konverter" wird von woanders "kopiert", weil ich noch lerne, aber ich kann nicht herausfinden, wie man die Mathematik richtig in den Code einfügt, also versucht alles in "def converter" es herauszufinden – Chaost

+0

Sie haben ein paar Probleme. Sie sollten 'self.converter()' als erste Zeile in 'OnPressEnter()' aufrufen. Sie können keine Strings zu Floats hinzufügen. Sie sollten etwas mehr tun wie '' {} ist der Bereich. ". Format (self.convertVariable.get())'. 'converter()' definiert 'convertVariable', setzt aber' convert'. Schalten Sie die 'self.convert' in' self.convertVariable' um. Die 'self.entryVariable' ist eine' StringVar', also denken Sie daran, sie zu konvertieren, bevor Sie versuchen, damit zu rechnen. Das wäre 'float (...)' oder einfach eine 'DoubleVar'. Ich glaube nicht, dass ich etwas vergessen habe, aber sag mir, ob es nicht funktioniert. – zondo

Antwort

1

Ich habe Ihren Code etwas geändert. Jetzt wird der Code den Bereich auf dem Etikett anzeigen, wie Sie erwähnt haben. Überprüfen Sie den Code. Wenn ich falsch liege, lassen Sie es mich wissen.

import Tkinter, math 
 

 
class calc_tk(Tkinter.Tk): 
 
    def __init__(self,parent): 
 
     Tkinter.Tk.__init__(self,parent) 
 
     self.parent = parent 
 
     self.initialize() 
 

 
    def initialize(self): 
 
     self.grid() 
 

 
     self.entryVariable = Tkinter.StringVar() 
 
     self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
 
     self.entry.grid(column=0,row=0,sticky='EW') 
 
     self.entry.bind("<Return>", self.OnPressEnter) 
 
     self.entryVariable.set(u"Radius") 
 

 
     button = Tkinter.Button(self,text=u"Click to convert",command=self.OnButtonClick) 
 
     button.grid(column=1,row=0) 
 

 
     self.labelVariable = Tkinter.StringVar() 
 
     label = Tkinter.Label(self,textvariable=self.labelVariable,anchor="w",fg="white",bg="gray") 
 
     label.grid(column=0,row=1,columnspan=2,sticky='EW') 
 
     self.labelVariable.set(u"Please enter a radius.") 
 

 
     self.grid_columnconfigure(0,weight=1) 
 
     self.resizable(True,False) 
 
     self.update() 
 
     self.geometry(self.geometry())  
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def OnButtonClick(self): 
 
     
 
     self.labelVariable.set(str(self.converter())+" is the area.") 
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def OnPressEnter(self,event): 
 
     self.labelVariable.set(str(self.converter())+" is the area.") 
 
     self.entry.focus_set() 
 
     self.entry.selection_range(0, Tkinter.END) 
 

 
    def converter(self): 
 
     print self.entryVariable.get() 
 
     return (math.pi * (float(self.entryVariable.get()) * float(self.entryVariable.get()))) 
 

 
if __name__ == "__main__": 
 
    app = calc_tk(None) 
 
    app.title('Radius Converter') 
 
    app.mainloop()

+0

So habe ich die Änderungen angewendet, aber jetzt bekomme ich einen Syntaxfehler und es macht die ":" in 'if __name__ ==" __main __ ":' – Chaost

+0

seine Einzug Problem .. ich habe es geändert . –

+0

Dieser Code wird als Code-Snippet angezeigt. Haben Sie getestet, dass es möglich ist, es auszuführen? –

Verwandte Themen