2016-02-04 56 views
4
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() 

一旦運行這個問題,其中我無法找到,我遇到了一個非常奇怪的錯誤任何問題......這裏有什麼問題? (屬性錯誤__len__)

Traceback (most recent call last): 
    File "C:/Users/19CRF01/Desktop/ab.py", line 14, in <module> 
    button=buttton(root) 
    File "C:/Users/19CRF01/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__ 

我會很樂意爲更多任何幫助!

回答

3

這裏是你的問題:

self.pack(frame) 

self.pack並不需要一個框架的說法。刪除frame,它應該運行正常,像這樣:

self.pack() 
+0

這就是解決方案,但描述是有點兒含糊。 'pack'不需要'frame'對象,它的幫助('pack_configure(self,cnf = {},** kw)')表明它試圖使用'frame'作爲配置字典。 – tdelaney

+0

另外,它看起來像在OP的代碼中,想法是使用'pack()'將'self'添加到'frame'。這不是必須的,因爲它已經在調用Button.__ init __()'時被設置爲'frame'的子元素。 –

+0

哇......謝謝......我現在要去死在恥辱...... –