Foros del Web » Programando para Internet » Python »

python + gtk win32; crear ventana en múltiples monitores

Estas en el tema de python + gtk win32; crear ventana en múltiples monitores en el foro de Python en Foros del Web. Hola a todos, He hecho una pequeña aplicación en python y gtk; y funciona perfecto en linux. Ahora me ha tocado migrarla a windows y ...
  #1 (permalink)  
Antiguo 19/11/2011, 07:31
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
python + gtk win32; crear ventana en múltiples monitores

Hola a todos,

He hecho una pequeña aplicación en python y gtk; y funciona perfecto en linux.
Ahora me ha tocado migrarla a windows y me encuentro con el siguiente problema:

Se trata de plantar una ventana gtk en un 2do o 3er monitor.
para ello, según parece; hay que conseguir el nombre del display, que con las X es sencillo; pero no tengo idea de como hacerlo en windows. el código python (en plan demo) sería algo así:

Código Python:
Ver original
  1. import gtk
  2.  
  3. class GUI(object):
  4.     def __init__(self):
  5.         display1 = gtk.gdk.Display(':1.0')
  6.         display0 = gtk.gdk.Display(':0.0')
  7.         #display1 = gtk.gdk.Display('0\WinSta0\Default')
  8.         screen0 = display0.get_screen(0)
  9.         screen1 = display0.get_screen(1)
  10.         window0 = gtk.Window()
  11.         window0.set_screen(screen0)
  12.         window1 = gtk.Window()    
  13.         window1.set_screen(screen1)
  14.         label0 = gtk.Label("Display :0.0")
  15.         label1 = gtk.Label("Display :1.0")
  16.         window0.add(label0)
  17.         window1.add(label1)
  18.         window0.fullscreen()
  19.         window1.fullscreen()
  20.         window0.show_all()
  21.         window1.show_all()
  22.         self.widget = [display0,display1]
  23.  
  24. if __name__ == "__main__" :
  25.     gui = GUI()
  26.     gtk.main()

En linux va bien; es decir, crea una ventana con un label "Display :0:0" en medio en el monitor primario a fullscreen y otra en el monitor 2 con un label "Display :0:1" en medio.
La gdk.Display recibe en el constructor un *gchar display_name o Null (default, monitor primario). Buceando por ahi he sabido que ese nombre para el monitor primario en Windows es '0\WinSta0\Default' (de hecho hay una línea comentada en el código de ejemplo donde lo pone y funciona) pero no tengo idea de como conseguir lo que llaman display_name para los siguientes monitores.

A todos muchas gracias por adelantado por el interés y la ayuda.

Última edición por razpeitia; 19/11/2011 a las 11:34
  #2 (permalink)  
Antiguo 19/11/2011, 15:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 13 años, 7 meses
Puntos: 59
¿Has probado con el método get_name()?

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111
  #3 (permalink)  
Antiguo 20/11/2011, 07:10
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: python + gtk win32; crear ventana en múltiples monitores

Hola _Adrian_,

Gracias por tu respuesta; pero get_name no recibe ningún parámetro y sólo devuelve el nombre del monitor actual; es decir, el primario.

Justamente de lo que se trata es de conseguir el nombre de los demás monitores.

Daniel

P.D.: Por cierto, hay un error en el código que os pasé. Donde dice screen1 = display0.get_screen(1) debería decir screen1 = display1.get_screen(0)
  #4 (permalink)  
Antiguo 20/11/2011, 11:07
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: python + gtk win32; crear ventana en múltiples monitores

Cita:
Iniciado por dbologna Ver Mensaje
Justamente de lo que se trata es de conseguir el nombre de los demás monitores.
Entonces lo quieres es la clase gtk.gdk.DisplayManager.

Código Python:
Ver original
  1. >>> import gtk
  2. >>> m = gtk.gdk.DisplayManager()
  3. >>> m.list_displays()
  4. [<gtk.gdk.Display object at 0x2912b48 (GdkDisplay at 0x2cbf068)>]

Etiquetas: gtk, monitores, win32, 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 11:22.