2016-05-18 17 views
0

Ich muss einen Eintrag von einer GUI in einer Gleichung verwenden, und ich bekomme konsequent Fehler, wenn ich versuche, es in eine ganze Zahl zu konvertieren. Die Variable, die ich konvertieren möchte, ist als "Radius" gekennzeichnet.Wie konvertiert man einen tkinter Eintrag in eine ganze Zahl

import math 
import tkinter as tk 

circ = tk.Tk() 
circ.title("Circle") 
circ.geometry("150x75") 

radiusLabel = tk.Label(circ, text = "What is the radius?") 
radiusEntry = tk.Entry(circ) 

def close_window(): 
    circ.destroy() 

radius = int(radiusEntry) 

submit = tk.Button(circ, text = "Submit", command = close_window) 

radiusLabel.pack() 
radiusEntry.pack() 
submit.pack() 
circ.mainloop() 

class Shape(): 
    def __init__(self, radius): 
     self.circumference = float(2) * float(radius) * float(math.pi) 
     self.area = float(math.pi) * float(radius*radius) 

    def getArea(self): 
     return self.area 

    def getPerimeter(self): 
     return self.circumference 

    def __str__(self): 
     return "Area: %s, Circumference: %s" % (self.area, self.circumference) 

circle = Shape(radius) 
print(circle) 
+1

Sie könnten versuchen, 'Radius = int (radiusEntry.get())', aber es ist nicht sofort zur Arbeit gehen. Dies liegt daran, dass diese Zeile eine Millionstel Sekunden nach dem ersten Erstellen des Fensters ausführt, so dass der Benutzer wahrscheinlich noch nichts in das Textfeld eingegeben hat. – Kevin

+0

Was ist der Fehler? –

Antwort

0

Drei Dinge, die Ihnen dabei helfen wird:

  1. Allgemeiner Hinweis: Wenn Dinge wie diese Debuggen von print-Anweisungen verwenden, um zu sehen, ob Sie die Informationen sind immer Sie erwarten. Gibt radiusEntry immer eine Nummer? Meine Vermutung ist wahrscheinlich nicht.

  2. Ich glaube, Sie sollten radius = int(radiusEntry.get()) werden mit dem Eingangswert

  3. wahrscheinlich die beste Wahl ist die Durchführung einer Kontrolle zu bekommen, bevor Sie den Radius in einen int gegossen, und dafür sorgen, dass Sie versuchen, tatsächlich zu konvertieren eine Zahl. Wenn Sie versuchen, einen Buchstaben oder einen Nicht-Datentyp zu konvertieren, könnte dies Ihren Fehler verursachen. Sie können dies mit der Python-Methode isnumeric() für Strings überprüfen.

Pseudocode für Sie:

If the radius entry is a number, 

    convert the radius entry to an int 
+0

Das Problem ist, dass der Code es nicht konvertieren wird. Ich habe versucht, int (RadiusEntry) Int (RadiusEntry.get()) und viele mehr. Ich versuche herauszufinden, welche Methode die Zeichenfolge aus dem Eintrag tatsächlich in eine Ganzzahl konvertiert – KR1DL1