當前位置:首頁 ? tkinter ? 正文

tkinter,在同一模塊下的多窗體操作,不用Toplevel組件,用函數

    還有一種方法,不用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() # 先進入第一個窗口:登錄窗口

運行結果:

未命名.GIF


我們舉一反三,把上面的代碼改一下,可以由一個主窗口切換到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() # 先進入主窗口

運行結果

未命名.GIF

此文章來自:wb98.com  網站還有相關的系列課程文章,感興趣的可以前往。


來源:濟亨網

本文鏈接:http://www.chinaengraver.com/post/355.html

    << 上一篇 下一篇 >>

    湘公網安備 43011102000514號 - 湘ICP備08100508號

    2019年秋霞鲁丝片瓜皮_导航亚洲AV日韩AV永久无码_有没有哪些可以看片的免费的_国产色妞妞在线视频免费播放