五筆打字通主頁
在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.chinaengraver.com/post/349.html