Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/11/2011, 07:31
dbologna
 
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