当前位置:首页 » tkinter » 正文

tkinter多界面切换,简单的程序的切换方式1,用frame组件来帮忙

  在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()

运行结果:

未命名.GIF

此文章来自:wb98.com  网站还有相关的系列课程文章,感兴趣的可以前往。

打赏 支付宝打赏 微信打赏

来源:济亨网

本文链接:http://wb86.com/post/349.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号