2016-10-22 9 views
-2

私は基本的な温度変換器を作っています。私はそれを持っているので、セルシウスをfarenheightに変換することができます。tkinterクラスのエラー

from tkinter import * 
bool1 = True 
class App: 
    def __init__(self, master): 
     frame = Frame(master) 
     frame.pack() 
     self.x = Label(frame, text = 'Celcius:').grid(row = 0, column = 0) 
     self.c_var = DoubleVar() 
     Entry(frame, textvariable = self.c_var).grid(row = 0, column = 1) 
     self.z = Label(frame, text = 'Farenheight:').grid(row = 1, column = 0) 
     self.result_var = DoubleVar() 
     Label(frame, textvariable = self.result_var).grid(row = 1, column = 1) 
     b1 = Button(frame, text = 'Switch', command = self.switch) 
     b1.grid(row = 2, columnspan = 2) 
     button = Button(frame, text = 'Convert', command = self.convert) 
     button.grid(row = 3, columnspan = 2) 
     return None 
    def convert(self): 
     c = self.c_var.get() 
     c = c * (9/5) + 32 
     self.result_var.set(c) 
    def switch(self): 
     global bool1 
     if bool1 == True: 
      bool1 = False 
      self.x.config(text = 'Farenheight:') 
     else: 
      bool1 = True 
      self.z['text'] = 'Celcius:' 
root = Tk() 
root.wm_title('Temp Converter') 
app = App(root) 
root.mainloop() 

私は取得していますエラーメッセージは次のとおりです:私はこのコードを持っている

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Users\keith\AppData\Local\Programs\Python\Python35- 32\lib\tkinter\__init__.py", line 1550, in __call__ 
    return self.func(*args) 
    File "C:\Users\keith\Desktop\tkinter.py", line 26, in switch 
    self.x.config(text = 'Farenheight:') 
AttributeError: 'NoneType' object has no attribute 'config' 

答えて

0

問題は、あなたがXとZの属性が割り当てられているという事実から来ている(self.x、self.z) tkinterラベルではなく、Tkinter.Label.grid()関数が返すものはNoneです。

代わりに、ラベルとそのグリッド構成の宣言を、最初に変数を宣言してからグリッド関数を呼び出して、ラベル自体にxとzを割り当てる2行に分けてください。

from tkinter import * 
bool1 = True 
class App: 
    def __init__(self, master): 
     frame = Frame(master) 
     frame.pack() 
     self.x = Label(frame, text = 'Celcius:') 
     self.x.grid(row = 0, column = 0) 
     self.c_var = DoubleVar() 
     Entry(frame, textvariable = self.c_var).grid(row = 0, column = 1) 
     self.z = Label(frame, text = 'Farenheight:') 
     self.z.grid(row = 1, column = 0) 
     self.result_var = DoubleVar() 
     Label(frame, textvariable = self.result_var).grid(row = 1, column = 1) 
     b1 = Button(frame, text = 'Switch', command = self.switch) 
     b1.grid(row = 2, columnspan = 2) 
     button = Button(frame, text = 'Convert', command = self.convert) 
     button.grid(row = 3, columnspan = 2) 
     return None 
    def convert(self): 
     c = self.c_var.get() 
     c = c * (9/5) + 32 
     self.result_var.set(c) 
    def switch(self): 
     global bool1 
     if bool1 == True: 
      bool1 = False 
      self.x.config(text = 'Farenheight:') 
     else: 
      bool1 = True 
      self.z['text'] = 'Celcius:' 
root = Tk() 
root.wm_title('Temp Converter') 
app = App(root) 
root.mainloop()