继承 class returns NoneType 实例

Inherited class returns NoneType instance

我试图在 Tkinter 中创建我自己的小部件,所以我继承自 Frame class。 但是由于某种原因,我的 Food class returns NoneType class 实例。为什么会发生,我怎样才能使它 return 成为 Food class 的一个实例?

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()

请注意,Food(root,1).pack(fill='x') 将得到 .pack(...) 的结果,它总是 None

您需要将行分成两行:

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

这是因为您将 .pack() 函数放在了 type() 函数中,这使得 type() 变为 return return 类型的函数 'Food(root,1).pack(fill='x')' (这是 None) 而不是 class object 'Food(root,1)' 如你所愿。