我需要知道屏幕的尺寸(确切地说:高度)低于当前Gtk.Window.The最常用的推荐方法:
window = Gtk.Window()
screen = window.get_screen()
h = screen.height()
做了这项工作,但给了我DeprecationWarning: Gdk.Screen.height is deprecated
,并且迟早会停止工作。我不想添加任何新的依赖项,所以this cool cheat sheet无能为力。
我的代码应该可以在带有多头设置的Linux上运行,并且这个高度必须是当前屏幕的高度。
发布于 2020-09-27 10:51:55
更详细的背景:我正在开发的程序是一个墙纸管理器。我希望(浮动)窗口垂直使用所有可能的空间,并在两侧留出一些空间,以观察背景的变化。
由于没有合理的解决方案,我决定遵循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()
这样,窗高度不包括嵌板(如果有的话)。不幸的是,它在平铺窗口管理器上不起作用,所以我不得不使用fullscreen()
而不是maximize()
,并任意减少高度。
delay_ms
最佳值随硬件速度和使用中的WM而变化,这是另一个不便之处。
https://stackoverflow.com/questions/64038301
复制