【问题标题】:AttributeError: Menu instance has no attribute '__len__'AttributeError:菜单实例没有属性“__len__”
【发布时间】:2016-11-27 09:47:23
【问题描述】:

我不熟悉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()

【问题讨论】:

    标签: python python-2.7 tkinter


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多