Python - Comprobar ventana abierta

   
Vista:

Comprobar ventana abierta

Publicado por luclinux (26 intervenciones) el 27/08/2013 12:39:02
Buenos días, en mi aplicación tengo un botón que abre una determinada ventana.

En el módulo principal importo el módulo que tiene la ventana:

from busqueda import Find

En el módulo principal, escribo la función del botón Buscar:

def btBuscar (self, widget):
Find()

Como la ventana que crea el módulo principal no se cierra, puedo volver a pulsar el botón. Se vuelve a crear la ventana Find, que es lo que no quiero. ¿Como puedo hacer para comprobar que dicha ventana ya está abierta y darle el foco si lo está?

Gracias de antemano.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Comprobar ventana abierta

Publicado por xve (1232 intervenciones) el 27/08/2013 15:14:26
Hola luclinux, no das mucha información...
Find() que es? devuelve algo? que tipo de ventana abre? es un proceso aparte?

Si nos puedes dar mas información...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comprobar ventana abierta

Publicado por luclinux (26 intervenciones) el 27/08/2013 19:06:22
De acuerdo, cierto que no me he explicado bien. Perdón por la escasez :-)

Tengo dos archivos, main.py (que abre la ventana principal de la aplicación) y buscar.py (una ventana para que el usuario busque en la base de datos) Ambas ventanas, son de nivel superior, construidas con glade.

El main.py sería algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pygtk
pygtk.require('2.0')
import gtk
import os
import sys
from buscar import Find 'aqui importo la clase Find del archivo buscar.py


class main:
	
	def __init__(self):
		#Obtenemos la ruta de la carpeta donde se encuentra el glade
		pathname = os.path.dirname(sys.argv[0])
		ruta = os.path.abspath(pathname) + "/GUI/"
		pantallaPrincipal = ruta + "main.glade"
		
		builder= gtk.Builder()
		builder.add_from_file(pantallaPrincipal)
			
		dict = {"on_btBuscar_clicked": self.btBuscarClick,
				"gtk_main_quit": self.Salir}
		builder.connect_signals(dict)
	
#Aqui lanzo la ventana donde el usuario va a buscar	
def btBuscarClick(self, widget):
		Find()

def Salir(self, widget, data=None):
		gtk.main_quit()


if __name__=="__main__":
	main()
	gtk.main()


El buscar.py algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pygtk
pygtk.require('2.0')
import gtk
 
class Find:
 
	def __init__(self):
		#Obtenemos la ruta de la carpeta donde se encuentra el glade
		pathname = os.path.dirname(sys.argv[0])
		ruta = os.path.abspath(pathname) + "/GUI/"
		pantallaBusqueda = ruta + "busqueda.glade"
 
		builder= gtk.Builder()
		builder.add_from_file(pantallaBusqueda)
 
		dict = {
}
		builder.connect_signals(dict)


Así, cada vez que se ejecuta el código asociado al botón buscar:

1
2
def btBuscarClick(self, widget):
		Find()


se carga una nueva ventana del archivo "busqueda.py". Lo que quiero es comprobar si ya hay una abierta, y si es así, darle el foco.

Gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar