0
我正在使用Tkinter編程Python 2.7.3中的圖形前端。我有一個主菜單(例子中的A)和一個窗口(B)。 A包含一個列表框,B正在做一些需要A中列表框內容的東西.B完成其工作後,我需要一個名爲A(doSomething)的方法。我的簡化代碼如下所示:當類正在調用對方的方法時,Python/Tkinter失敗
#!/usr/bin/env python
import Tkinter as tk
class A(object):
def __init__(self, root):
self.__mainMenu = root
self.__LB = tk.Listbox(self.__mainMenu)
self.__LB.pack()
self.__LB.insert(tk.END, "foo")
b = B(self.__mainMenu, self.__LB)
def doSomething(self):
print "Ham and spam!"
class B(object):
def __init__(self, mainMenu, LB):
self.__mainMenu = mainMenu
self.__LB = LB
print self.__LB.get(0)
self.__mainMenu.doSomething()
def main():
root = tk.Tk()
gui = A(root)
root.mainloop()
main()
以下的輸出效果:
$ ./myTest.py
foo
Traceback (most recent call last):
File "./myTest.py", line 29, in <module>
main()
File "./myTest.py", line 26, in main
gui = A(root)
File "./myTest.py", line 11, in __init__
b = B(self.__mainMenu, self.__LB)
File "./myTest.py", line 21, in __init__
self.__mainMenu.doSomething()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __getattr__
return getattr(self.tk, attr)
AttributeError: doSomething
哪裏從何而來這個錯誤?爲什麼錯誤輸出很差?
我很慚愧......這是深夜! :-)謝謝,解決了它。 – user1488553 2013-02-28 09:42:11