代码之家  ›  专栏  ›  技术社区  ›  Evan

Pygtk中的持久窗口

  •  1
  • Evan  · 技术社区  · 17 年前

    是否可以强制gtk.window对象忽略窗口管理器的显示/隐藏命令,如“iconify”和“show desktop”?

    我试图创建一个持久的窗口,卡在桌面上,当桌面暴露时,它不会随其他窗口一起消失。

    编辑: 我想我特别想知道的是,是否可以使用pygtk重现在应用程序(如Dock、桌面小部件、系统托盘等)中发现的行为?

    5 回复  |  直到 12 年前
        1
  •  2
  •   unwind    17 年前

    你把它倒过来了;不是窗口管理器通过发送命令来告诉窗口最小化。窗口管理器 拥有 窗口,如果它想停止映射一个窗口,它只需执行它,而不需要向窗口请求权限。

    所以我认为答案是“不”。

        2
  •  1
  •   Torsten Marek    17 年前

    尝试设置 GdkWindowTypeHint 上 GtkWindow :

    gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);
    

    还有各种方法可以避免将窗口列在寻呼机或任务栏中,并将其显示在所有桌面上。请记住,所有这些行为都依赖于窗口管理器的支持。除非你用的是很老的东西,否则这不会造成问题。

        3
  •  1
  •   TheAmigo    12 年前

    从 list of window type hints ,单击“显示桌面”按钮时,只会显示两个:

    • gtk.gdk.window_type_hint_桌面
    • gtk.gdk.window_type_提示_dock

    这两者都会导致窗口丢失装饰(即没有边框或标题栏),因此移动/调整大小取决于应用程序。桌面使窗口始终位于其他窗口之后。码头使它总是在前面。

    选择SplashScreen会给您一个未修饰的窗口,当您单击“显示桌面”时,该窗口仍然隐藏。

    如果您希望用户单击“显示桌面”时仍显示无边界、不移动的窗口,请使用:

    window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
    

    在调用window.show()之前。窗口一旦显示,就不能更改其类型。

        4
  •  0
  •   Evan    17 年前

    没有收到“这是如何做到这一点”的答案,并且做了更多的研究,我可以说——据我所知——用Pygtk实现这类功能并不是一个简单的方法。最好的选择是设置窗口管理器提示,并让WM来做您想要做的事情(希望如此)。

        5
  •  0
  •   Mxyk Edda    13 年前

    我想 gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN) 是你想要的。它也是 GDK_WINDOW_TYPE_HINT_DOCK 但是窗子总是放在最上面,你不能把它送回去。