2015-07-11 85 views
1

而在蟒蛇編碼我有錯誤。 需要再次重新&打印相同的隨機值。Python的錯誤; 「NoneType」對象有「後」沒有屬性

from Tkinter import * 
import Tkinter 
from random import randint 

class App1(Tkinter.Tk): 

    def __init__(self, master): 
     Tkinter.Tk.__init__(self,master) 
     self.master = master 

     self.label = Label(self , text = "Voltage" , font = ("Helvetica",32)) 
     self.label.grid(row = 0) 

     self.reading_label = Label(self,text = '0.0' , font = ("Helvetica",110)) 
     self.reading_label.grid(row = 1) 
     self.update_reading() 


    def update_reading(self): 
     value = randint(0,9) 
     reading_str = "{:.2f}".format(value) 
     self.reading_label.configure(text = reading_str) 
     self.master.after(1 , self.update_reading) 


root = App1(None) 
root.title("Option") 
root.geometry("320x240") 
root.mainloop() 

我收到錯誤消息:

Traceback (most recent call last): 
File "/voltmeter.py", line 26, in <module> 
root = App1(None) 
File "/voltmeter.py", line 16, in __init__ 
self.update_reading() 
File "/voltmeter.py", line 23, in update_reading 
self.master.after(1 , self.update_reading) 
AttributeError: 'NoneType' object has no attribute 'after' 
+2

看起來你永遠不會初始化'master'的任何東西,因爲你是路過'None'到'__init__'方法。 「主」應該是什麼類型? – Engineero

回答

4

你是你的主變量設置爲None,因爲你是在下面的行傳遞的參數爲None創建App1對象 -

root = App1(None) 

因此,當你調用 - self.master.after(1 , self.update_reading),你所得到的AttributeError,因爲self.master是無。

我不知道你想達到什麼,但你可以嘗試設置self.master爲None以外的東西(無論你想要它是)。

2

誤差是不言自明:self.masterNone。它來自於線

root = App1(None) 

如果你想有一個計時器,看到這個question比如:

self.root.after(1 , self.update_reading) 
相關問題