python pygtk 如何将窗口放置在特定显示器上
我在使用Python的PyGTK库,操作的是基于Linux的系统(像是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, offset_y)
可以用来把窗口移动到特定的显示器上。
不过,这个方法似乎并不是每次都有效。看起来窗口的位置会受到鼠标位置的影响,或者如果显示器的分辨率不一样,这个方法就不管用了。
有没有什么gtk.Window的属性可以帮助解决这个问题? 我尝试了一些方法,但都没有效果:
gtk.Window.set_position(gtk.WIN_POS_NONE)
gtk.Window.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST)
有没有什么好的建议?
1 个回答
6
你的显示器一起组成了一个 屏幕。你可以查询这个屏幕来了解它的显示器信息。然后,你可以通过调整窗口的 (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)
你可以在 这里 查看我提供的类似回答。