继承 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)' 如你所愿。
我试图在 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)' 如你所愿。