我在星期一開始使用Python進行編程。我很喜歡學習它。但我堅持試圖瞭解如何在tkinter菜單之間切換時避免遞歸!我相信這是一個非常基本的問題,我感謝你們對這個問題的無知,但我一直無法在其他地方找到答案。Tkinter - RuntimeError:超過最大遞歸深度
我現在做什麼,最終,給我的錯誤:RuntimeError:最大遞歸深度,同時調用Python對象
這是超出我目前使用的模式。更新:下面的代碼現在是一個完整的,孤立的副本,再現我面臨的問題! :D
from tkinter import *
def mainmenu():
global frame, root
frame.destroy()
frame = Frame()
frame.pack()
button1 = Button(frame, text="anothermenulikethis", command = anothermenulikethis)
button2 = Button(frame, text="anothermenulikethis", command = anothermenulikethis)
button3 = Button(frame, text="mainmenu", command = mainmenu)
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
root.mainloop()
def anothermenulikethis():
global frame, root
frame.destroy()
frame = Frame()
frame.pack()
button1 = Button(frame, text="mainmenu", command = mainmenu)
button2 = Button(frame, text="mainmenu", command = mainmenu)
button3 = Button(frame, text="anothermenulikethis", command = anothermenulikethis)
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
root.mainloop()
root = Tk()
root.title("Recursive Menu Problem Isolation")
root.geometry("1200x600")
frame = Frame()
mainmenu()
它一切正常,直到它從最大遞歸深度的不可避免的失敗。如果任何人都可以提出一個更好的做法,或者有一個更好的做法的例子,我很想學習。 PS:我已經看過並試圖增加遞歸深度,但我覺得這是一個窮人的解決方案,以解決我的方法的根本問題。
謝謝大家。
按照要求,這裏是回溯:
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/tkinter/__init__.py", line 1399, in __call__
return self.func(*args)
File "/Users/diligentstudent/Desktop/menutest.py", line 11, in mainmenu
button1 = Button(frame, text="anothermenulikethis", command = anothermenulikethis)
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/tkinter/__init__.py", line 2028, in __init__
Widget.__init__(self, master, 'button', cnf, kw)
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/tkinter/__init__.py", line 1958, in __init__
(widgetName, self._w) + extra + self._options(cnf))
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/tkinter/__init__.py", line 1043, in _options
v = self._register(v)
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/tkinter/__init__.py", line 1079, in _register
f = CallWrapper(func, subst, self).__call__
RuntimeError: maximum recursion depth exceeded
你能發佈stacktrace嗎?需要知道哪個函數導致遞歸深度異常。 – 2012-04-06 05:30:54
我已根據請求發佈追蹤。 :) – 2012-04-06 05:57:05