五笔打字通主页
在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 网站还有相关的系列课程文章,感兴趣的可以前往。
来源:济亨网
本文链接:https://wb98.com/post/349.html