Skip to main content
 首页 » 编程设计

python之属性错误 : Menu instance has no attribute '__len__'

2025年05月04日25lonelyxmas

我不熟悉 python 的方法,我在这里看到了一些其他类似描述的问题,但无法解决这个问题。

错误:

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() 

请您参考如下方法:

您需要将菜单作为关键字参数传入:

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

当你传入一个positional参数时(所以没有menu=部分),那么Tkinter期望收到一个带有配置的字典(所以{' menu': self.menu}) 或包含更多序列或字典的序列。因为 self.menu 两者都不是,所以您会看到错误。