我需要知道当前Gtk.Window下方屏幕的尺寸(确切地说:高度(。最常用的推荐方法:
window = Gtk.Window()
screen = window.get_screen()
h = screen.height()
做这项工作,但给了我DeprecationWarning: Gdk.Screen.height is deprecated
,可能迟早会停止工作。我不想添加任何新的依赖项,所以这个很酷的备忘单没有帮助。
我的代码预计可以在Linux上使用多头设置,这必须是当前屏幕的高度。
更详细的背景:我正在开发的程序是一个壁纸管理器。我希望(浮动(窗口垂直使用所有可能的空间,并在两侧留出一些空间,以观察背景的变化。
由于没有合理的解决方案,我决定遵循这个答案。
def check_height_and_start(window):
w, h = window.get_size()
window.destroy()
if common.sway or common.env['wm'] == "i3":
h = h * 0.95
app = GUI(h)
def main():
(...)
w = Gtk.Window() # actually I derived from Gtk.Window to make the window transparent
if common.sway or common.env['wm'] == "i3":
w.fullscreen() # .maximize() doesn't work as expected on sway
else:
w.maximize()
w.present()
GLib.timeout_add(delay_ms, check_height_and_start, w)
Gtk.main()
这样,窗户高度就不包括嵌板(如果有的话(。不幸的是,它不适用于平铺窗口管理器,所以我不得不使用fullscreen()
而不是maximize()
,并任意降低高度。
delay_ms
最优值随硬件速度和使用中的WM而变化,这是另一个不便之处。