2016-11-27 10 views
1

私はPythonの方法に慣れていませんが、私はここでも同様の記述でいくつかの質問を見ましたが、これを修正できませんでした。AttributeError:Menuインスタンスに属性 '__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はどちらもないため、表示されるエラーが発生します。

関連する問題