AttributeError:菜单实例没有属性'__len__'

utk*_*agi 1 python tkinter python-2.7

我不熟悉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__'
Run Code Online (Sandbox Code Playgroud)

程序:

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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

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

self.master.config(menu=self.menu)
Run Code Online (Sandbox Code Playgroud)

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