2015-07-11 139 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) 
相关问题