2017-05-02 19 views
-1

私はguiに表示するすべてを得ているが、今私は税の変換を正しく表示することができません。Python Tkinterプロパティー税金のGUI

これ以上いくつか作業した後のコードです。私は今、ラベルごとに2つの文字列オブジェクトを作成しました。しかし、財産税をフロートに変換することはできません。

アセスメント値の$ 100ごとに不動産税が$ 0.75である必要があります。あなたは、プロパティ値のために250000を入力した場合

したがって、それは私はあなたが持っている何をする必要があるかと思います150000の評価値と1125

import tkinter 


def main(): 
    my_gui = PropertyTaxGUI() 

class PropertyTaxGUI(): 

    def __init__(self): 
     self.main_window = tkinter.Tk() 

     self.top_frame = tkinter.Frame() 
     self.mid_frame = tkinter.Frame() 
     self.third_frame = tkinter.Frame() 
     self.bottom_frame = tkinter.Frame() 

     #create widgets for the top frame 
     self.prompt_label = tkinter.Label(self.top_frame, 
              text='Enter the property value: $') 
     self.prop_value = tkinter.Entry(self.top_frame, 
             width=10) 

     #pack the top frame's widgets 
     self.prompt_label.pack(side='left') 
     self.prop_value.pack(side='left') 

     #create widgets for the middle frame 
     self.assess_val = tkinter.Label(self.mid_frame, 
             text='Assessment Value: $') 

     #need a stringvar object to associate with an output label 
     self.value = tkinter.StringVar() 

     #create a label and associate it with the stringvar object 
     self.assess_label = tkinter.Label(self.mid_frame, 
              textvariable=self.value) 

     #pack the middle frame's widgets 
     self.assess_val.pack(side='left') 
     self.assess_label.pack(side='left') 

     #create the widgets for the third frame 
     self.prop_tax = tkinter.Label(self.third_frame, 
             text='Property Tax: $') 

     #need a stringvar object to associate witih second output label 
     self.value2 = tkinter.StringVar() 

     #create a label and associate it with the stringvar object 
     self.prop_tax_val = tkinter.Label(self.third_frame, 
              textvariable=self.value2) 

     #pack the third frame's widgets 
     self.prop_tax.pack(side='left') 
     self.prop_tax_val.pack(side='left') 

     #create the button widgets for the bottom frame 
     self.calc_button = tkinter.Button(self.bottom_frame, 
              text='Calculate', 
              command=self.calc_button_event) 
     self.quit_button = tkinter.Button(self.bottom_frame, 
              text='Quit', 
              command=self.main_window.destroy) 

     #pack the buttons 
     self.calc_button.pack(side='left') 
     self.quit_button.pack(side='left') 

     #pack the frames 
     self.top_frame.pack() 
     self.mid_frame.pack() 
     self.third_frame.pack() 
     self.bottom_frame.pack() 

     #enter the tkinter main loop 
     tkinter.mainloop() 

    def calc_button_event(self): 
     self.calculate() 
     self.taxCalc() 


    def calculate(self): 
     propVal = float(self.prop_value.get()) 

     assessVal = propVal*0.6 

     self.value.set(assessVal) 

    def taxCalc(self): 

     assessVal = float(self.value2.get()) 

     assessTax = assessVal*0.0075 

     self.value2.set(assessTax) 



main() 
+0

:このコードを試してみてください。あなたが今持っているものは有効ですが、キャンバス内にはありません。 – Ajax1234

+0

私は今編集して別の問題を思いついた。私のコードをもう一度見ていただけますか? – Classicalclown

+0

宿題:あなたのタイトルをラウンドの質問文に変換し、私はダウンボートを上に変更します。 – peterh

答えて

0

の固定資産税の値を返す必要があります財産税の総額を計算する関数は1つだけです。 2つのメソッドを使用していますが、そのうちの1つだけが呼び出されているようです。私はあなたが高さと幅の寸法でtkinter.Canvasを()を追加する必要があると考えてい

import tkinter 

class PropertyTaxGUI(): 

    def __init__(self): 
     self.main_window = tkinter.Tk() 

     self.top_frame = tkinter.Frame() 
     self.mid_frame = tkinter.Frame() 
     self.third_frame = tkinter.Frame() 
     self.bottom_frame = tkinter.Frame() 

     #create widgets for the top frame 
     self.prompt_label = tkinter.Label(self.top_frame, 
             text='Enter the property value: $') 
     self.prop_value = tkinter.Entry(self.top_frame, 
            width=10) 
     #pack the top frame's widgets 
     self.prompt_label.pack(side='left') 
     self.prop_value.pack(side='left') 

     #create widgets for the middle frame 
     self.assess_val = tkinter.Label(self.mid_frame, 
            text='Assessment Value: $') 

     #need a stringvar object to associate with an output label 
     self.value = tkinter.StringVar() 

     #create a label and associate it with the stringvar object 
     self.assess_label = tkinter.Label(self.mid_frame, 
             textvariable=self.value) 

     #pack the middle frame's widgets 
     self.assess_val.pack(side='left') 
     self.assess_label.pack(side='left') 

     #create the widgets for the third frame 
     self.prop_tax = tkinter.Label(self.third_frame, 
            text='Property Tax: $') 
     self.prop_tax_val = tkinter.Label(self.third_frame, 
             textvariable=self.value) 

     #pack the third frame's widgets 
     self.prop_tax.pack(side='left') 
     self.prop_tax_val.pack(side='left') 

     #create the button widgets for the bottom frame 
     self.calc_button = tkinter.Button(self.bottom_frame, 
             text='Calculate', 
             command=self.calculate) 
     self.quit_button = tkinter.Button(self.bottom_frame, 
             text='Quit', 
             command=self.main_window.destroy) 

     #pack the buttons 
     self.calc_button.pack(side='left') 
     self.quit_button.pack(side='left') 

     #pack the frames 
     self.top_frame.pack() 
     self.mid_frame.pack() 
     self.third_frame.pack() 
     self.bottom_frame.pack() 

     #enter the tkinter main loop 
     tkinter.mainloop() 

    def calculate(self): 
     self.propVal = float(self.prop_value.get()) 

     self.assessVal = self.propVal*0.6 

     self.property_tax = (self.propVal//100) * 0.74 
     self.value.set(self.property_tax+self.assessVal) 



#create an instance of the class 
my_gui = PropertyTaxGUI() 
+0

資産税が評価額から計算されても、それでも私には同じ結果が得られます。したがって、評価額は不動産価値の60%であり、不動産税は評価額の$ 100ごとに0.75です。あなたのコードは0.75のプロパティ値を与え、それを評価値とプロパティー税額の両方に適用します。 – Classicalclown

+0

私は少し質問をよく理解していると思います。 calculate()の最後の編集を見てください。 – Ajax1234

+0

いいえ、それは同じことをやっています。基本的に、250000でプロパティ値を入力する場合、評価値は150000、財産税は1125を返す必要があります。あなたが提供したものは、propvalとproptaxに対して同じことを戻します – Classicalclown