五筆打字通主頁
還有一種方法,不用Toplevel組件來模擬一下多窗體切換,所有的代碼都寫在一個模塊內,簡單的程序也可以采取這種方法。
在下面的代碼里,我把2個窗體寫在2個函數里:
先運行one()函數,展示的是第1個窗體,即登錄窗體,
答對通關密碼,就關閉窗體1,運行函數two(),展示窗體2。
如果不答通關密碼,直接退出窗體1,窗體2也不會顯示。
以下是代碼: 丶丌皛
from tkinter import * def one(): # 第1個窗體:登錄窗體 def ok(): if en1.get()=='wb98.com': root1.destroy() # 關閉登錄窗體 two() # 進入第2個窗體:主窗體 root1=Tk() # 源碼來自wb98.com root1.title('登錄窗口') root1.geometry('300x150+888+444') la0=Label(root1,text='請輸入通關密碼 : wb98.com') la0.pack() en1=Entry(root1) en1.pack() but1=Button(root1,text=" 確 定 ",command=ok) # 判斷密碼是否正確 but1.pack(pady=5) # but2=Button(root1,text=" 退 出 ",command=root1.destroy) # 關閉登錄窗體 # but2.pack(pady=5) root1.mainloop() # 一直在等待接受窗體1事件,不會進入第2個窗體 def two(): # 第2個窗體:主窗體 root2=Tk() root2.title('主窗口') root2.geometry('300x150+888+444') la1=Label(root2,text='密碼正確,歡迎來到主窗口') la1.pack() root2.mainloop() one() # 先進入第一個窗口:登錄窗口
運行結果:
我們舉一反三,把上面的代碼改一下,可以由一個主窗口切換到2個(或N個)窗體,同時也可以由這些窗口返回到主窗口來:
from tkinter import * def main(): # 主窗體 # 源碼來自wb98.com def goto(num): root.destroy() # 關閉主窗體 if num==1: one() # 進入第1個窗體 elif num==2: two() # 進入第2個窗體 root=Tk() # 源碼來自wb98.com root.title('登錄窗口') but1=Button(root,text="進入 窗口1",command=lambda:goto(1)) # 進入窗口1 but1.pack(pady=5) but2=Button(root,text="進入 窗口2",command=lambda:goto(2)) # 進入窗口2 but2.pack(pady=5) root.mainloop() def one(): # 第1個窗體 def gotomain(): root1.destroy() # 關閉第1個窗體 main() # 返回主窗體 root1=Tk() root1.geometry('300x150+888+444') la1=Label(root1,text='我是第1窗口',bg='lightgreen').pack(fill=X) but3=Button(root1,text="返回主窗體",command=gotomain) but3.pack(pady=10) root1.mainloop() def two(): # 第2個窗體 def gotomain(): root2.destroy() # 關閉第2個窗體 main() # 返回主窗體 root2=Tk() root2.geometry('300x150+888+444') Label(root2,text='我是第2窗口',bg='lightblue').pack(fill=X) but3=Button(root2,text="返回主窗體",command=gotomain) but3.pack(pady=10) root2.mainloop() main() # 先進入主窗口
運行結果
此文章來自:wb98.com 網站還有相關的系列課程文章,感興趣的可以前往。
來源:濟亨網
本文鏈接:http://www.chinaengraver.com/post/355.html