Skip to main content
 首页 » 编程设计

python 错误; 'NoneType' 对象没有属性 'after'

2025年05月04日16thcjp

我在使用 Python 编码时出错。 需要一次又一次地打印相同的随机值。

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' 

请您参考如下方法:

您正在将主变量设置为 None,因为您通过在以下行中将参数作为 None 传递来创建 App1 对象 -

root = App1(None) 

因此,当您调用 - self.master.after(1 , self.update_reading) 时,您将收到 AttributeError ,因为 self.master 为 None。

我不确定你想要实现什么,但你可以尝试将 self.master 设置为 None 以外的其他内容(无论你想要它是什么)。