如何解决在这些情况下如何使用销毁
在处理模块时遇到另一个问题。我无法“破坏”上班。 我想用一个按钮打开,然后用另一个按钮关闭顶层窗口。
这里有一些代码可以应用毁灭
# module uno.py
import tkinter as tk
class PRUEBA:
def __init__(*args):
ventana_principal = tk.Tk()
ventana_principal.geometry ("600x600")
ventana_principal.config (bg="blue")
ventana_principal.title ("PANTALLA PRINCIPAL")
def importar():
from dos import toplevel
top = toplevel(ventana_principal)
boton = tk.Button (ventana_principal,text = "open",command = importar)
boton.pack ( )
boton1 = tk.Button (ventana_principal,text = "close",command = top.destroy) #does not work destroy
boton1.pack ( )
ventana_principal.mainloop()
PRUEBAS = PRUEBA ()
#module dos.py
import tkinter as tk
class toplevel(tk.Toplevel):
def __init__(self,parent,*args,**kw):
super().__init__(parent,**kw)
self.geometry("150x40+190+100")
self.resizable(0,0)
self.transient(parent)
解决方法
这是因为top
是importar()
函数内部的局部变量。
改为使用实例变量self.top
:
class PRUEBA:
def __init__(self,*args):
ventana_principal = tk.Tk()
ventana_principal.geometry("600x600")
ventana_principal.config(bg="blue")
ventana_principal.title("PANTALLA PRINCIPAL")
def importar():
from dos import toplevel
self.top = toplevel(ventana_principal)
boton = tk.Button(ventana_principal,text="open",command=importar)
boton.pack()
boton1 = tk.Button(ventana_principal,text="close",command=lambda: self.top.destroy())
boton1.pack()
请注意,您需要解决在单击open
按钮之前多次单击close
按钮的情况。然后将有两个或更多个toplevel
窗口,并且close
按钮只能关闭最后一个打开的窗口。
此外,您不能在close
按钮之前单击open
按钮。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。