鱼C论坛

 找回密码
 立即注册
查看: 764|回复: 7

[已解决]如何保持只有一个 子窗口

[复制链接]
发表于 2020-4-1 17:12:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想要的效果:
无论第几次按下按钮,桌面 都只有一个按钮。
下面代码实现了部分功能,但是在用户主动关闭该子窗口的时候,按下按钮就不在显示子窗口了,但是  temp列表值一直在增加。
————————————————————————————————————————————————————————————————————————————
from tkinter import *
root=Tk()
def top1():   
    top1=Toplevel()
    top1.title='弹窗1'

    temp.append(1)

    if len(temp)>1:
        top1.destroy()
        
    else:
        pass
    print(temp)        
   
temp=[]

button=Button(root,command=top1)
button.grid()


root.mainloop
————————————————————————————————————————————————————————————————————————————————————————————————————————
最佳答案
2020-4-1 17:42:13
python羊 发表于 2020-4-1 17:40
老哥,虽然点击删除之后,不会消失,但是程序会弹出多个子窗口。
我想用top1.state() 返回子窗口状态,当to ...

看看我的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-1 17:30:58 | 显示全部楼层
?,你这个不是我的原代码吗?并未看到改动呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:35:02 | 显示全部楼层
python羊 发表于 2020-4-1 17:30
?,你这个不是我的原代码吗?并未看到改动呀
from tkinter import *
root=Tk()
def clear():
    global temp
    temp.clear()
    top1.destroy()
def top1():
    global top1
    top1=Toplevel()
    top1.title='弹窗1'
    top1.protocol("WM_DELETE_WINDOW", clear)

    temp.append(1)

    if len(temp)>1:
        top1.destroy()
        
    else:
        pass
    print(temp)        
   
temp=[]

button=Button(root,command=top1)
button.grid()


root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:39:37 | 显示全部楼层
from tkinter import *

root = Tk()


def top1():

    def clear():
        temp.clear()
        top1.destroy()

    top1 = Toplevel()
    top1.title = '弹窗1'
    top1.protocol("WM_DELETE_WINDOW", clear)    # 设置关闭窗口时要做的事

    temp.append(1)

    if len(temp) > 1:
        top1.destroy()
    else:
        pass
    print(temp)


temp = []

button = Button(root, command=top1)
button.grid()

root.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 17:40:07 | 显示全部楼层
老哥,虽然点击删除之后,不会消失,但是程序会弹出多个子窗口。
我想用top1.state() 返回子窗口状态,当top1.state()  不等于  normal 的时候才新建窗口,但不知道怎么写这句话。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:42:13 | 显示全部楼层    本楼为最佳答案   
python羊 发表于 2020-4-1 17:40
老哥,虽然点击删除之后,不会消失,但是程序会弹出多个子窗口。
我想用top1.state() 返回子窗口状态,当to ...

看看我的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:47:18 | 显示全部楼层
python羊 发表于 2020-4-1 17:40
老哥,虽然点击删除之后,不会消失,但是程序会弹出多个子窗口。
我想用top1.state() 返回子窗口状态,当to ...

看看我的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 17:48:30 | 显示全部楼层
感谢老哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 19:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表