五笔打字通主页
在tkinter中,如果需要多界面,可能要考虑一下 Toplevel 组件了。但这里不讨论这个组件,相信 Toplevel 组件的具体运用大家都清楚如何用,只是,我们有时只是做一个小的,简单的程序,并不想多创建更多的窗体,只是想在同一个窗体下模拟成2、3个窗体的切换,这里,就可以考虑 Frame 或 LabelFrame 等框架容器组件了。
这些容器组件可以装入其它组件,我们可以把这些容器组件当成窗体,这些容器可以分别用不同的布局定位方法。
在窗体root下创建3个Frame组件,把“窗体1”,“窗体2”,“窗体3”的组件分别装入这3个Frame组件,分别切换显示这3个Frame就达到了窗体切换的假象。
下面是我做的代,3个Frame组件分别装入3个按钮,通过窗体右键菜单或点击按钮切换不同的“窗体”。 丶丌皛
from tkinter import *
def popup_menu(event):
popup.post(event.x_root,event.y_root)
def gotofr1():
fr1.pack(fill=BOTH,expand=True)
fr2.pack_forget()
fr3.pack_forget()
root.title('窗口1')
fr1.config(bg='lightblue')
def gotofr2():
fr2.pack(fill=BOTH,expand=True)
fr1.pack_forget()
fr3.pack_forget()
root.title('窗口2')
fr2.config(bg='lightgreen')
def gotofr3():
fr3.pack(fill=BOTH,expand=True)
fr1.pack_forget()
fr2.pack_forget()
root.title('窗口3')
fr3.config(bg='lightyellow')
root=Tk() # 源码来自wb98.com
root.title('窗口1')
root.geometry('300x150+888+444')
popup=Menu(root,tearoff=0)
popup.add_command(label='窗口1',command=gotofr1) # 通过窗体右键菜单来切换不同的'窗体'
popup.add_command(label='窗口2',command=gotofr2)
popup.add_command(label='窗口3',command=gotofr3)
root.bind("<Button-3>",popup_menu)
fr1=Frame(root,relief='ridge',borderwidth=4) # 不设置边线宽,无法显示
fr1.pack(fill=BOTH,expand=True)
fr1.config(bg='lightblue')
fr2=Frame(root,relief='ridge',borderwidth=4) # 不设置边线宽,无法显示
# fr2.pack() # 先不布局定位
fr3=Frame(root,relief='ridge',borderwidth=4) # 不设置边线宽,无法显示
# fr3.pack() # 先不布局定位
but1=Button(fr1,text="窗口1按钮")
but1.pack() # 用pack()方法
but2=Button(fr2,text="窗口2按钮")
but2.grid() # 用grid()方法
but3=Button(fr3,text="窗口3按钮")
but3.place(relx=0.5,rely=0.5) # 用place()方法
but1.bind("<ButtonRelease-1>",popup_menu) # 按钮点击释放后弹出菜单
but2.bind("<ButtonRelease-1>",popup_menu)
but3.bind("<ButtonRelease-1>",popup_menu)
root.mainloop()
运行结果:
此文章来自:wb98.com 网站还有相关的系列课程文章,感兴趣的可以前往。
来源:济亨网
本文链接:http://www.wb86.com/post/349.html