【问题标题】:Inherited class returns NoneType instance继承的类返回 NoneType 实例
【发布时间】:2021-12-07 01:10:44
【问题描述】:

我正在尝试在 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(...)的结果类型,它总是None
  • @acw1668 ,是的,是的。这就是原因。谢谢!

标签: python oop tkinter


【解决方案1】:

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

你需要将一行分成两行:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多