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
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comprobar ventana abierta

Publicado por xve (1646 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

Comprobar ventana abierta

Publicado por Richar (1 intervención) el 07/08/2021 01:55:22
Hola que tal . encontraste la soluciona a tu problema porque yo estoy en las mismas . Tengo un botón que abre una ventana específicamente una toplevel en la ventana principal pero también quisiera que no se vuelva abrir si ya esta abierta. Cualquier sugerencia es bienvenida,
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comprobar ventana abierta

Publicado por tincopasan (1082 intervenciones) el 07/08/2021 14:51:40
¿viste la fecha? no has dicho ni en que entornno y vi en otro sitio esta misma pregunta por un usuario con el mismo nombre, ¿serás vos?
igual es una respuesta muy simple si es tkinter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import tkinter as tk
estado=True
def abre():
    global estado
 
    def cerrar():
        global estado
        ventana_nueva.destroy()
        estado=True
 
    if estado:
        ventana_nueva = tk.Toplevel()
        ventana_nueva.title("ventana Secundaria")
        ventana_nueva.geometry("400x200")
        estado=False
        ventana_nueva.protocol("WM_DELETE_WINDOW",cerrar)
 
root = tk.Tk()
root.title("Ventana Principal")
root.geometry("200x200")
envia= tk.Button(root,text = "Otra",command=abre).grid(row=1)
 
root.mainloop()
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