Foros del Web » Programando para Internet » Python »

Problema en Manejo de Ventanas

Estas en el tema de Problema en Manejo de Ventanas en el foro de Python en Foros del Web. Hola. Quisiera saber como puedo hacer para que al presionar un botón se cierre la ventana donde ese botón esta y llame a una nueva ...
  #1 (permalink)  
Antiguo 21/10/2011, 19:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 1
Problema en Manejo de Ventanas

Hola. Quisiera saber como puedo hacer para que al presionar un botón se cierre la ventana donde ese botón esta y llame a una nueva Ventana. Preciso eliminar la ventana que dejo de usar pues trabajo con equipos de muy poca potencia y no puedo desperdiciar memoria. Espero puedan darme un ejemplo o guiarme pues estoy super trancado con eso ... GRACIAS!!!!!!!
  #2 (permalink)  
Antiguo 21/10/2011, 19:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema en Manejo de Ventanas

Y que estas usando para crear la ventana?
  #3 (permalink)  
Antiguo 21/10/2011, 20:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema en Manejo de Ventanas

Estoy usando gtk.window.
  #4 (permalink)  
Antiguo 21/10/2011, 20:34
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema en Manejo de Ventanas

Si lo que buscas es que cuando cierres una ventana libere la memoria esta sera liberada automáticamente por el recolector de basura una vez que este objeto ya no tenga ninguna referencia en tu programa.
  #5 (permalink)  
Antiguo 21/10/2011, 20:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema en Manejo de Ventanas

Trato de explicar lo mejor que pueda. Lo que preciso lograr es que:

Tengo una ventana (A modo de ejemplo la llamare Win1) y dentro de ésta, tengo un botón (lo llamaré Bot1). Cuando preciso hacer es que cuando presiono Bot1 se abra una nueva ventana (la llamare Win2) y en ese instante se cierre Win1. Pues ya no preciso más Win1 ya que paso a trabajar en Win2.
saludos.
  #6 (permalink)  
Antiguo 21/10/2011, 20:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema en Manejo de Ventanas

Como no mostrarte lo unico que puedo hacer es un pequeño ejemplo. Usando la consola dinámica de python.

Código:
>>> import gtk
>>> w = gtk.Window() #Asi es como creas la venta
>>> w.show() #Asi es como la muestras
>>> w.destroy() #Asi la cierras
>>> w #Pero todavia existe una referencia a tu ventana
<gtk.Window object at 0x24584e0 (GtkWindow at 0x26b4010)>
>>> del w #Entonces borras esa referencia
  #7 (permalink)  
Antiguo 24/10/2011, 10:26
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Problema en Manejo de Ventanas

He intentado hacer un esquema general de tu problema, pero no me termina de salir bien. ¿Te refieres a esto?
Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf8 -*-
  3.  
  4. import pygtk
  5. pygtk.require('2.0')
  6. import gtk
  7.  
  8. class Ejemplo:
  9.     def quitarwindow1(self, widget, data=None):
  10.         self.window1.destroy()
  11.         del self.window1
  12.         self.mostrarwin2
  13.        
  14.     def mostrarwin2(self, widget, data=None):
  15.         self.window2 = gtk.Window(gtk.WINDOW_TOPLEVEL) #Creamos la ventana 2
  16.         self.window2.connect("destroy",self.cerrar) #Cuando cerremos la ventana 2
  17.        
  18.         self.label = gtk.Label("Ventana 2") #Creamos algo
  19.         self.window2.add(self.label) #añadimos a la ventana
  20.         self.label.show()
  21.         self.window2.show() #mostramos la ventana
  22.  
  23.     def __init__(self):
  24.         self.window1 = gtk.Window(gtk.WINDOW_TOPLEVEL) #Creamos ventana 1
  25.         self.window1.connect("destroy", self.quitarwindow1) #Creamos función para eliminar cuando la cerremos
  26.         #~ self.window.set_border_width(10)
  27.        
  28.         self.btt1 = gtk.Button("cerrar") #Creamos el botón que abre nueva ventana
  29.         self.btt1.connect("clicked", self.mostrarwin2, None) #Conectamos las señales
  30.        
  31.         self.window1.add(self.btt1) #Añadimos el botón a la ventana
  32.         self.btt1.show() #Mostramos el botón
  33.         self.window1.show() #Mostramos la ventana
  34.        
  35.     def cerrar(self,widget):
  36.         gtk.main_quit()
  37.  
  38. if __name__ == "__main__":
  39.     ejemplo = Ejemplo()
  40.     gtk.main()

Última edición por cambiadeso; 24/10/2011 a las 10:49
  #8 (permalink)  
Antiguo 24/10/2011, 11:06
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Problema en Manejo de Ventanas

Lo he revisado y ahora sí que me sale con este código. Compruébalo a ver si te pasa a ti lo mismo:
Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf8 -*-
  3. # example helloworld.py
  4.  
  5. import pygtk
  6. pygtk.require('2.0')
  7. import gtk
  8.  
  9. class Ejemplo:
  10.     def quitarwindow1(self, widget, data=None):
  11.         self.window1.destroy()
  12.         del self.window1
  13.        
  14.     def mostrarwin2(self, widget, data=None):
  15.         self.window1.destroy() #Destruye la ventana, y a su vez llama a la función quitarwindow1
  16.         self.window2 = gtk.Window(gtk.WINDOW_TOPLEVEL) #Creamos la ventana 2
  17.         self.window2.connect("destroy",self.cerrar) #Cuando cerremos la ventana 2
  18.        
  19.         self.label = gtk.Label("Ventana 2") #Creamos algo
  20.         self.window2.add(self.label) #añadimos a la ventana
  21.         self.label.show()
  22.         self.window2.show() #mostramos la ventana
  23.  
  24.     def __init__(self):
  25.         self.window1 = gtk.Window(gtk.WINDOW_TOPLEVEL) #Creamos ventana 1
  26.         self.window1.connect("destroy", self.quitarwindow1) #Creamos función para eliminar cuando la cerremos
  27.        
  28.         self.btt1 = gtk.Button("cerrar") #Creamos el botón que abre nueva ventana
  29.         self.btt1.connect("clicked", self.mostrarwin2, None) #Conectamos las señales
  30.        
  31.         self.window1.add(self.btt1) #Añadimos el botón a la ventana
  32.         self.btt1.show() #Mostramos el botón
  33.         self.window1.show() #Mostramos la ventana
  34.        
  35.     def cerrar(self,widget):
  36.         gtk.main_quit()
  37.  
  38. if __name__ == "__main__":
  39.     ejemplo = Ejemplo()
  40.     gtk.main()
  #9 (permalink)  
Antiguo 24/10/2011, 22:50
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema en Manejo de Ventanas

Si funciona, buen trabajo!!!
  #10 (permalink)  
Antiguo 02/11/2011, 08:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 9
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema en Manejo de Ventanas

MUCHISIMAS GRACIAS FUCIONA PERFECTAMENTE!!!

ME HAN SALVADO!!!!

Etiquetas: manejo, usar, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:12.