PyGTK中的持久窗口

1 投票
5 回答
1140 浏览
提问于 2025-04-15 11:11

有没有办法让一个gtk.Window对象忽略窗口管理器的显示/隐藏命令,比如“最小化”和“显示桌面”?

我想创建一个持久的窗口,它会固定在桌面上,不会在显示桌面时和其他窗口一起消失。

编辑:我具体想知道的是,是否可以用PyGTK实现像一些应用程序那样的行为,比如工具栏、桌面小部件、系统托盘等等?

5 个回答

1

窗口类型提示列表来看,点击“显示桌面”按钮时,只有两个类型的窗口会被显示:

  • gtk.gdk.WINDOW_TYPE_HINT_DESKTOP
  • gtk.gdk.WINDOW_TYPE_HINT_DOCK

这两个类型的窗口都没有边框和标题栏,所以你需要在你的应用程序里自己处理移动和调整大小。选择DESKTOP类型的窗口会让它总是在其他窗口的后面,而选择DOCK类型的窗口则会让它总是在最前面。

如果你选择SPLASHSCREEN类型,你会得到一个没有边框的窗口,它在你点击“显示桌面”时仍然会隐藏。

如果你想要一个没有边框、不能移动,但在用户点击“显示桌面”时仍然可见的窗口,可以使用:

window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

在你调用window.show()之前使用这个代码。一旦窗口显示出来,就不能再改变它的类型了。

1

试着在 GtkWindow 上设置 GdkWindowTypeHint

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);

还有一些方法可以让你的窗口不出现在任务栏或分页器上,并且可以在所有桌面上显示。要记住的是,这些行为都依赖于窗口管理器的支持。不过,除非你用的是非常老旧的系统,否则一般不会有问题。

2

你搞错了,实际上不是窗口管理器给窗口发命令让它最小化。窗口管理器拥有这个窗口,如果它想要停止显示某个窗口,它会直接这么做,而不需要问窗口的意见。

所以我觉得答案是“不是的”。

撰写回答