如何在没有弃用警告的情况下检查 python/Gtk 3.0 中的当前屏幕尺寸?
How to check the current screen dimensions in python / Gtk 3.0 without deprecation warnings?
我需要知道当前 Gtk.Window.The 最常推荐的方法下方屏幕的尺寸(确切地说:高度):
window = Gtk.Window()
screen = window.get_screen()
h = screen.height()
完成工作,但给我 DeprecationWarning: Gdk.Screen.height is deprecated
,并且可能迟早会停止工作。我不想添加任何新的依赖项,所以 this cool cheat sheet 没有帮助。
我的代码预计可以在 Linux 多头设置上运行,并且这必须是当前屏幕的高度。
更详细的背景:我正在开发的程序是壁纸管理器。我希望(浮动)window 垂直使用所有可能的 space,并在两侧留下一些 space,以观察背景变化。
没有合理的解决方案,我决定按照this answer。
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()
这样 window 高度不包括面板(如果有)。不幸的是,它在平铺 window window 管理器时不起作用,所以我不得不使用 fullscreen()
而不是 maximize()
,并任意降低高度。
delay_ms
最佳值随硬件速度和使用的WM而变化,这是另一个不便之处。
我需要知道当前 Gtk.Window.The 最常推荐的方法下方屏幕的尺寸(确切地说:高度):
window = Gtk.Window()
screen = window.get_screen()
h = screen.height()
完成工作,但给我 DeprecationWarning: Gdk.Screen.height is deprecated
,并且可能迟早会停止工作。我不想添加任何新的依赖项,所以 this cool cheat sheet 没有帮助。
我的代码预计可以在 Linux 多头设置上运行,并且这必须是当前屏幕的高度。
更详细的背景:我正在开发的程序是壁纸管理器。我希望(浮动)window 垂直使用所有可能的 space,并在两侧留下一些 space,以观察背景变化。
没有合理的解决方案,我决定按照this answer。
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()
这样 window 高度不包括面板(如果有)。不幸的是,它在平铺 window window 管理器时不起作用,所以我不得不使用 fullscreen()
而不是 maximize()
,并任意降低高度。
delay_ms
最佳值随硬件速度和使用的WM而变化,这是另一个不便之处。