<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"> </p>
<p class="MsoNormal">My trouble is the menu layers are not covering each other up
correctly.<span style=""> </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"> </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=""> </span>Likewise, the mainmenu function will return
the menu cleanly to its normal state.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I've also fiddled with .grid_forget() and .destroy() and had
the same results.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I'm still very inexperienced. Can someone give me a hand
here?</p>
<p class="MsoNormal"> </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=""> </span>main.grid_remove ()</p>
<p class="MsoNormal"><span style=""> </span>root.update()</p>
<p class="MsoNormal"><span style=""> </span>if y ==1:</p>
<p class="MsoNormal"><span style=""> </span>menu1()</p>
<p class="MsoNormal"><span style=""> </span>if y==2:</p>
<p class="MsoNormal"><span style=""> </span>menu2()</p>
<p class="MsoNormal"><span style=""> </span>if y==3:</p>
<p class="MsoNormal"><span style=""> </span>menu3()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">def menu1():</p>
<p class="MsoNormal"><span style=""> </span>X=Canvas(root,
width=200, height=200, bg="blue")</p>
<p class="MsoNormal"><span style="">
</span>X.grid(row=0,column=0)</p>
<p class="MsoNormal"><span style="">
</span>but2=Button(X,text="back",command=mainmenu)</p>
<p class="MsoNormal"><span style=""> </span>but2.grid()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">def menu2():</p>
<p class="MsoNormal"><span style=""> </span>Y=Canvas(root,
width=200, height=200, bg="red")</p>
<p class="MsoNormal"><span style="">
</span>Y.grid(row=0,column=0)</p>
<p class="MsoNormal"><span style="">
</span>but1=Button(Y,text="back",command=mainmenu)</p>
<p class="MsoNormal"><span style=""> </span>but1.grid()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">def menu3():</p>
<p class="MsoNormal"><span style=""> </span>Z=Canvas(root,
width=200, height=200, bg="green")</p>
<p class="MsoNormal"><span style="">
</span>Z.grid(row=0,column=0)</p>
<p class="MsoNormal"><span style=""> </span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">def mainmenu():</p>
<p class="MsoNormal"><span style="">
</span>main=Canvas(root,width=200,height=200,bg="grey")</p>
<p class="MsoNormal"><span style="">
</span>main.grid(row=0,column=0)</p>
<p class="MsoNormal"><span style="">
</span>men1=Button(main,text="menu 1",command=lambda y=1:menu(y))</p>
<p class="MsoNormal"><span style=""> </span>men1.grid()</p>
<p class="MsoNormal"><span style="">
</span>men2=Button(main,text="menu 2",command=lambda y=2:menu(y))</p>
<p class="MsoNormal"><span style=""> </span>men2.grid()</p>
<p class="MsoNormal"><span style=""> </span>men3=Button(main,text="menu
3",command=lambda y=3:menu(y))</p>
<p class="MsoNormal"><span style=""> </span>men3.grid()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">root= Tk()</p>
<p class="MsoNormal">root.geometry('200x200')</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">main=Canvas(root,width=200,height=200,bg="grey")</p>
<p class="MsoNormal">main.grid(row=0,column=0)</p>
<p class="MsoNormal">men1=Button(main,text="menu 1",command=menu1)</p>
<p class="MsoNormal">men1.grid()</p>
<p class="MsoNormal">men2=Button(main,text="menu 2",command=menu2)</p>
<p class="MsoNormal">men2.grid()</p>
<p class="MsoNormal">men3=Button(main,text="menu 3",command=menu3)</p>
<p class="MsoNormal">men3.grid()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">root.mainloop()</p>
<p class="MsoNormal">#################</p>