编程语言
首页 > 编程语言> > python pygtk如何在特定的显示器上放置一个窗口

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