我在OS Linux上使用Python PyGTK库(suse,ubuntu) 使用具有多个显示监视器的设备。
我试图在连接到设备的特定显示器监视器上放置一个全屏窗口(在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 :(得分:6)
您的显示器共同组成一个屏幕。您可以查询屏幕以了解其监视器。然后,您可以通过将窗口(x,y)与显示器的窗口(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。