繁体   English   中英

继承类返回 NoneType 实例

[英]Inherited class returns NoneType instance

我试图在 Tkinter 中创建我自己的小部件,所以我从 Frame 类继承。 但出于某种原因,我的Food类返回NoneType类实例。 为什么会发生,我怎样才能让它返回一个Food类的实例?

import tkinter as tk

class Food(tk.Frame):
    def __init__(self,parent,index,name="",price=0):
        tk.Frame.__init__(self, parent)

        self.name = tk.Entry(self)
        self.price = tk.Entry(self)

        self.name.insert(0, name)
        self.price.insert(0, str(price))

        self.name.pack(ipadx=70,ipady=5,side='left',expand=True, fill='x')
        self.price.pack(ipadx=10,ipady=5,side='left')

        self.index=index
        
    def getIndex(self):
        return self.index

if __name__ == "__main__":
    root = tk.Tk()
    print(type(Food(root,1).pack(fill='x'))) # <class 'NoneType'>
    root.mainloop()

这是因为您已将 .pack() 函数放在 type() 函数中,这使得 type() 返回函数'Food(root,1).pack(fill='x')'的返回类型(这是 None),而不是您想要的类对象'Food(root,1)'

请注意, Food(root,1).pack(fill='x')将获得.pack(...)的结果,该结果始终为None

您需要将该行拆分为两行:

...
frame = Food(root, 1)
frame.pack(fill='x')
print(type(frame))
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM