python pygtk如何在特定的显示器上放置一个窗口

我在基于OS Linux(suse,ubuntu)上使用Python PyGTK库在具有多个显示监视器的设备上工作。

我试图把一个全屏窗口(在python,gtk.Window)连接到设备的特定显示监视器。

我使用下面的代码:

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. 

第二个API返回监视器大小和偏移量信息。 gtk.Window.move(offset_x, offse_y)可用于在特定监视器上移动窗口。

虽然这似乎并不一直工作。 它看起来像窗口有鼠标位置的亲和力,或者如果显示器的分辨率不一样,这是行不通的。

有没有GTK.Window的任何属性,这将有助于缓解这个问题。 我试图玩下面的没有帮助:

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

有任何想法吗。

Solutions Collecting From Web of "python pygtk如何在特定的显示器上放置一个窗口"

您的显示器共同构成一个屏幕 。 您可以查询屏幕以查找其监视器。 然后,您可以通过将窗口(x,y)与监视器的窗口相对应,将窗口放置在给定的监视器上。

假设你的窗口是window ,你可以像这样得到屏幕

 screen = window.get_screen() 

然后获取像这样的监视器数据

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

显示器是数字0,1,2,…你可以得到当前的显示器,如果你需要,像这样:

 screen.get_monitor_at_window(screen.get_active_window()) 

要在监视器上放置一个窗口,可以将监视器的(x,y)添加到窗口的(x,y)。 计算这些x,y值,然后移动窗口:

 window.move(x,y) 

看到我在这里提供的类似的答案。