pygtk WINDOW_TYPE_HINT_DOCK 在Windows上无效

2 投票
1 回答
591 浏览
提问于 2025-04-16 20:42

我一直在为Linux开发一个类似于Dock的程序,但问题是当我想在Windows(XP/Vista/7)上运行它时,某些功能不起作用:

self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

还有

self.window.get_toplevel().show() # must call show() before property_change()
self.window.get_toplevel().window.property_change("_NET_WM_STRUT", 
"CARDINAL", 32, gtk.gdk.PROP_MODE_REPLACE, [0, 0, 0, bottom_width]) 

它显示了窗口边框(装饰),而且没有留出自己的空间。

简单来说,上面的代码就像不存在一样。

我需要修改什么才能让它正常工作呢?

附注:我已经安装了所有需要的程序文件。

提前谢谢大家 :)

1 个回答

1

WINDOW_TYPE_HINT_DOCK 在Windows版本中根本没有实现(或者说实现了但没什么用);你可以在GDK源代码中确认这一点。理论上来说,即使在X系统中,窗口管理器也不一定要对类型提示做什么(详细信息可以查看EWMH规范)。如果你不想要窗口的装饰,可以直接用gtk_window_set_decorated这个函数去掉它。

你问题的第二部分答案也差不多,不过这次很容易确认:它指的是NetWM,这和EWMH是一样的,都是X11系统的东西。要在Windows中实现struts(也就是窗口的边界),我很确定你得自己用Win32 API来做。(我不知道具体怎么做,但如果你需要窗口句柄,可以在window.window.handle中找到。)

撰写回答