2014-03-31 20 views
3

在我基础上使用OS的Linux的Python的PyGTK库(SUSE,Ubuntu的) 与多个显示监视器设备工作。蟒蛇的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) 

任何想法。

+0

更新了一些更多的信息.​​. – Feru

回答

5

你的显示器共同构成一个屏幕。您可以查询屏幕以查找其监视器。然后,您可以通过将窗口(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) 

见我提供here了类似的回答。

+0

感谢您回答starfry。我会研究你的建议,并让你知道结果。 – Feru

相关问题