这有什么不对? (属性错误__len__)

时间:2016-02-04 18:42:44

标签: python tkinter

鉴于这个相对简单的tk脚本:

import Tkinter

class buttton(Tkinter.Button):
    def __init__(self,frame,action=None):
        if action==None:
            action=self.action
        Tkinter.Button.__init__(self,frame,command=action)
        self.pack(frame)
    def action(self):
        None


root=Tkinter.Tk()
button=buttton(root)
root.mainloop()

运行此程序时,我遇到了相当神秘的错误:

Traceback (most recent call last):
  File "C:/Users/username/Desktop/ab.py", line 14, in <module>
    button=buttton(root)
  File "C:/Users/username/Desktop/ab.py", line 8, in __init__
    self.pack(frame)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1940, in pack_configure
    + self._options(cnf, kw))
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1162, in _options
    cnf = _cnfmerge(cnf)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 114, in _cnfmerge
    for c in _flatten(cnfs):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1898, in __getattr__
    return getattr(self.tk, attr)
AttributeError: __len__

如果有任何帮助,我会非常高兴!

1 个答案:

答案 0 :(得分:3)

这是你的问题:

self.pack(frame)

self.pack不接受帧参数。删除frame,它应该运行正常,如下所示:

self.pack()