五笔打字通主页
还有一种方法,不用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 网站还有相关的系列课程文章,感兴趣的可以前往。
来源:济亨网
本文链接:https://www.wb98.com/post/355.html