继承的类返回 NoneType 实例



我正在尝试在 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()

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

您需要将行拆分为两行:

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

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

相关内容