【python初级】 tkinter解决子窗口不关闭以及重复打开的问题

【python初级】 tkinter解决子窗口不关闭以及重复打开的问题

1.背景

python内置GUI模块tkinter,实现界面的时候,可能会遇到:
1.主窗体关闭子窗体还存在;
2.多次点击主窗体的按钮,子窗体会重复打开;
如下的代码:

__author__="jn10010537"
import sys
print(sys.version)
#3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]

import tkinter
def open_window():
    win_win = tkinter.Tk()
    win_win.geometry('300x300')
    label = tkinter.Label(win_win, text='测试:1.主窗体关闭,子窗体也跟着关闭\n2.子窗体不被重复打开')
    label.pack(padx=0,pady=100,anchor="w")
    win_win.mainloop()

if __name__ == '__main__':
    win = tkinter.Tk()
    win.title('test')
    win.geometry('300x300')
    button = tkinter.Button(win, text='点击', font=('Arial', 12), width=10, height=1, command=open_window)
    button.pack(padx=0,pady=100,anchor="w")
    win.mainloop()

在这里插入图片描述

2.解决办法

2.1. 主窗体关闭,子窗体也跟着关闭
通过tkinter.Toplevel()实现关闭主窗口时,自动关闭此窗口;

2.2 . 子窗体不被重复打开
通过设置句柄,控制子窗体不被重复打开;

3.代码

可以参照下面的代码,可能会帮到你解决项目上的问题。

__author__="jn10010537"
import sys
print(sys.version)
#3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]

import tkinter
handle={}
handle["control"]=1
def open_window():
    if handle["control"]:
        win_win = tkinter.Toplevel()
        win_win.geometry('300x300')
        label = tkinter.Label(win_win, text='测试:1.主窗体关闭,子窗体也跟着关闭\n2.子窗体不被重复打开')
        label.pack(padx=0,pady=100,anchor="w")
        handle["control"] = 0
    else:
        print("当前,重复无效点击")

if __name__ == '__main__':
    win = tkinter.Tk()
    win.title('test')
    win.geometry('300x300')
    button = tkinter.Button(win, text='点击', font=('Arial', 12), width=10, height=1, command=open_window)
    button.pack(padx=0,pady=100,anchor="w")
    win.mainloop()

在这里插入图片描述

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jn10010537

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值