python pygtk cómo colocar una ventana en un monitor de visualización específico

Estoy usando Python PyGTK library en SO Linux (suse, ubuntu) trabajando en dispositivos con múltiples monitores de pantalla.

Estoy tratando de colocar una ventana de pantalla completa (en python, gtk.Window) en un monitor de pantalla específico conectado al dispositivo.

Estoy usando el siguiente código:

n_monitors = gtk.gdk.Screen.get_n_monitors() # Get number of monitors. gtk.gdk.Screen.get_monitor_geometry(*monitor_number*) # Get the size of a specific monitor. 

El segundo api devuelve el tamaño del monitor y la información de desplazamiento. gtk.Window.move(offset_x, offse_y) se puede usar para mover una ventana en un monitor específico.

Aunque esto no parece funcionar todo el tiempo. Parece que la ventana tiene una afinidad con la ubicación del mouse o si las resoluciones del monitor no son las mismas, esto no funciona.

¿Existe alguna propiedad de gtk.Window que ayude a mitigar este problema? Intenté jugar con lo siguiente que no ayudó:

 gtk.Window.set_position(gtk.WIN_POS_NONE) gtk.Window.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST) 

Algunas ideas.

Sus monitores colectivamente forman una pantalla . Puedes consultar una pantalla para conocer sus monitores. Luego puede ubicar su ventana en un monitor dado al configurar la ventana (x, y) con la del monitor.

Suponiendo que su ventana es window , puede obtener la pantalla como esta

 screen = window.get_screen() 

y luego obtener los datos del monitor como este

 monitors = [] for m in range(screen.get_n_monitors()) monitors.append(screen.get_monitor_geometry(m) 

los monitores son números 0,1,2, … Puede obtener el monitor actual, si lo necesita, así:

 screen.get_monitor_at_window(screen.get_active_window()) 

Para colocar una ventana en un monitor, agregue el monitor (x, y) a la ventana (x, y). Calcula esos valores x, y luego mueve la ventana:

 window.move(x,y) 

Vea una respuesta similar que proporcioné aquí .