python pygtk如何在特定的显示器上放置一个窗口
作者:互联网
我在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)
有任何想法吗.
解决方法:
您的显示器共同组成一个屏幕.您可以查询屏幕以了解其监视器.然后,您可以通过将窗口(x,y)与显示器的窗口相同来将窗口定位在给定的监视器上.
假设您的窗口是窗口,您可以像这样获得屏幕
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.
标签:python,linux,multiple-monitors,pygtk 来源: https://codeday.me/bug/20190825/1716109.html