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