tkinter创建GUI实现多界面切换以及python中处理多个异常不退出程序


前言

  最近在学习使用tkinter模块做GUI界面,想要实现多个界面的切换。最开始的思路是创建多个frame(例如:frame1,frame2,frame3),然后在想要使用frame1当作界面时就使用frame.destroy()销毁frame2和frame3。制定好思路后就高兴地开始实施了,但是出现了问题。最开始假设我是在frame1的界面中,但是frame2和frame3还没有开始创建,这时候在frame1创建前销毁frame2和frame3就会报错,因此又想到在这里使用try…except来保证不会报错中止程序运行。最开始的try except结构如下所示:

try:
	frame1.destroy()
	frame2.destroy()
	frame3.destroy()
except:
	pass

  上述结构在运行中还是存在问题,如果frame1不存在,程序执行到frame1.destroy()后就不会在执行下面两行,就导致可能界面二或三存在,进入界面一时,它没有被销毁导致与frame1混在一起。最后又想到了try…except…finally…的结构,如下所示:

try:
    frame1.destroy()
except:
    pass
finally:
    try:
    	frame2.destroy()
    except:
        pass
    finally:
        try:
            frame3.destroy()
        except:
            pass
        finally:
        	pass
        	#该界面的待执行程序可放入其中

  不论try中的内容是否会报错都会执行finally后面的代码,这样使用上述结构后就能保证在切换某个界面时把之前创建的界面都销毁。


1. 多界面切换代码展示

1.1 引入库

import tkinter as tk 

1.2 多界面切换主程序

# 按钮对应的功能
def create_frame1():
    global frame3, frame2, frame1
    try:
        frame1.destroy()
    except:
        pass
    finally:
        try:
            frame2.destroy()
        except:
            pass
        finally:
            try:
                frame3.destroy()
            excep
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值