2016-11-27 63 views
1

我不熟悉Python的方式,我在這裏看到其他幾個類似描述的問題,但無法解決這個問題。AttributeError:菜單實例沒有屬性'__len__'

錯誤:

Traceback (most recent call last): 
File "C:/Users/UT/PycharmProjects/tkinter/python_PET/main.py", line 16, in <module> 
    m = menu_bar_class(root) 
File "C:/Users/UT/PycharmProjects/tkinter/python_PET/main.py", line 14, in __init__ 
    self.master.config(self.menu) 
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1326, in configure 
    return self._configure('configure', cnf, kw) 
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1312, in _configure 
    cnf = _cnfmerge(cnf) 
File "C:\Python27\lib\lib-tk\Tkinter.py", line 114, in _cnfmerge 
    for c in _flatten(cnfs): 
AttributeError: Menu instance has no attribute '__len__' 

計劃:

from Tkinter import * 
from tkFileDialog import * 
import tkMessageBox 
import ttk 
root = Tk() 

class menu_bar_class: 

    def __init__(self,master): 
     self.master = master 
     print("menu bar") 

     self.menu = Menu(self.master) 
     self.master.config(self.menu) 

m = menu_bar_class(root) 
root.mainloop() 

回答

5

您需要在菜單中傳遞的關鍵字參數:

self.master.config(menu=self.menu) 

當您在位置參數傳遞(所以沒有menu=部分),然後Tkin ter期望收到帶有配置的字典(如{'menu': self.menu})或包含更多序列或字典的序列。因爲self.menu既不是,你會看到你看到的錯誤。

相關問題