2016-05-18 14 views
0

GUIのエントリを方程式で使用する必要があります。整数に変換しようとするとエラーが発生します。私が変換しようとしている変数は "半径"としてマークされています。これであなたを助けるtkinterエントリを整数に変換するには

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

あなたは ''半径= INT(radiusEntry.get())を試みることができるが、すぐに仕事に行くのではありません。これは、ウィンドウが最初に作成された後、そのラインが100万分の1秒間実行されているため、ユーザーはまだテキストボックスに何も入力していない可能性が高いからです。 – Kevin

+0

エラーは何ですか? –

答えて

0

3つのこと:

  1. 一般ヒント:このようなものをデバッグするとき、あなたはあなたが期待している情報を取得しているかどうかを確認するためにprint文を使用します。 radiusEntryは常にあなたに番号を与えますか?私の推測はおそらくそうではありません。

  2. は、私はあなたがintに半径をキャストする前に

  3. はおそらくあなたの最善の策は、チェックを実行している入力値を取得するためにradius = int(radiusEntry.get())を使用して、あなたが実際に変換しようとしていることを確認するべきであると考えています数。文字型またはなしのデータ型を変換しようとすると、エラーが発生する可能性があります。文字列のpython isnumeric()メソッドを使用してこれを確認できます。

あなたのための擬似コード:

If the radius entry is a number, 

    convert the radius entry to an int 
+0

問題は、コードが変換しないことです。私は試しました int(radiusEntry) int(radiusEntry.get()) と多くの。私はどのメソッドが実際にエントリから整数に文字列を変換するのか把握しようとしています – KR1DL1

関連する問題