<p class="MsoNormal">Greetings again helpful friends,<br>
I've written a series of Python/Tkinter programs, each of which will represent
a different menu/screen in a simple Tkinter game I'm making. Now, my trouble is
linking them together through layered menus with buttons.<br>
<br>
So far, I've tried using a single Tk window, creating a series of canvas widgets,
each containing a series of buttons. When pressed, each button calls a function
which uses .grid_remove() on the current canvas and creates a new canvas with
new buttons in its place (a new menu).</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">My trouble is the menu layers are not covering each other up
correctly.<span style="">&nbsp; </span>menu1 and menu2 functions
fail to create a canvas of their designated size and .grid_remove() does not seem
to remove the main canvas, thus creating the appearance of jumbled, stacked buttons.</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">Oddly, the menu3 function will create its designated canvas
to cover up the main menu, but only seems to work because it has no buttons.<span style="">&nbsp; </span>Likewise, the mainmenu function will return
the menu cleanly to its normal state.</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">I've also fiddled with .grid_forget() and .destroy() and had
the same results.</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">I'm still very inexperienced. Can someone give me a hand
here?</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">Thanks,</p>


<p class="MsoNormal">-Phil<br>
<br>
#########<br>
from Tkinter import *<br>
</p>


<p class="MsoNormal"><br>
</p>
<p class="MsoNormal">def menu(y):</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>main.grid_remove ()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>root.update()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>if y ==1:</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>menu1()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>if y==2:</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>menu2()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>if y==3:</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>menu3()</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">def menu1():</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>X=Canvas(root,
width=200, height=200, bg=&quot;blue&quot;)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>X.grid(row=0,column=0)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>but2=Button(X,text=&quot;back&quot;,command=mainmenu)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>but2.grid()</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">def menu2():</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>Y=Canvas(root,
width=200, height=200, bg=&quot;red&quot;)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>Y.grid(row=0,column=0)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>but1=Button(Y,text=&quot;back&quot;,command=mainmenu)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>but1.grid()</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">def menu3():</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>Z=Canvas(root,
width=200, height=200, bg=&quot;green&quot;)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>Z.grid(row=0,column=0)</p>


<p class="MsoNormal"><span style="">&nbsp; </span></p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">def mainmenu():</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>main=Canvas(root,width=200,height=200,bg=&quot;grey&quot;)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>main.grid(row=0,column=0)</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>men1=Button(main,text=&quot;menu 1&quot;,command=lambda y=1:menu(y))</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>men1.grid()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;
</span>men2=Button(main,text=&quot;menu 2&quot;,command=lambda y=2:menu(y))</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>men2.grid()</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>men3=Button(main,text=&quot;menu
3&quot;,command=lambda y=3:menu(y))</p>


<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp; </span>men3.grid()</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">root= Tk()</p>


<p class="MsoNormal">root.geometry('200x200')</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">main=Canvas(root,width=200,height=200,bg=&quot;grey&quot;)</p>


<p class="MsoNormal">main.grid(row=0,column=0)</p>


<p class="MsoNormal">men1=Button(main,text=&quot;menu 1&quot;,command=menu1)</p>


<p class="MsoNormal">men1.grid()</p>


<p class="MsoNormal">men2=Button(main,text=&quot;menu 2&quot;,command=menu2)</p>


<p class="MsoNormal">men2.grid()</p>


<p class="MsoNormal">men3=Button(main,text=&quot;menu 3&quot;,command=menu3)</p>


<p class="MsoNormal">men3.grid()</p>


<p class="MsoNormal">&nbsp;</p>


<p class="MsoNormal">root.mainloop()</p>


<p class="MsoNormal">#################</p>