鱼C论坛

 找回密码
 立即注册
查看: 1050|回复: 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 ...

看看我的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-1 17:30:58 | 显示全部楼层
?,你这个不是我的原代码吗?并未看到改动呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  12.     temp.append(1)

  13.     if len(temp)>1:
  14.         top1.destroy()
  15.         
  16.     else:
  17.         pass
  18.     print(temp)        
  19.    
  20. temp=[]

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


  23. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2. root = Tk()


  3. def top1():

  4.     def clear():
  5.         temp.clear()
  6.         top1.destroy()

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

  10.     temp.append(1)

  11.     if len(temp) > 1:
  12.         top1.destroy()
  13.     else:
  14.         pass
  15.     print(temp)


  16. temp = []

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

  19. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

看看我的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

看看我的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 17:48:30 | 显示全部楼层
感谢老哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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