五笔打字通主页
还有一种方法,不用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://wb98.com/post/355.html