分组窗口在窗口列表中显示脚本名称而不是标题

Posted

技术标签:

【中文标题】分组窗口在窗口列表中显示脚本名称而不是标题【英文标题】:Grouped windows show script name instead of title in window list 【发布时间】:2012-08-07 21:05:15 【问题描述】:

我有一个使用 PyGTK 的 Python 应用程序。如果主窗口的标题是“Foo”,“Foo”将显示在 GNOME 的窗口列表中。由于当前配置了窗口列表,它将始终对来自同一应用程序的窗口进行分组。当我在主窗口顶部打开一个模态窗口时,窗口列表中的标题将更改为“foo.py”或任何 Python 脚本的名称。当窗口未分组时,两个窗口在列表中显示为“Foo”和“Bar”。

窗口分组时如何控制窗口列表中显示的内容?

【问题讨论】:

【参考方案1】:

分组窗口使用应用程序名称作为标签,AFAIK 默认为 argv[0]。这应该可以使用g_set_application_name(PyGTK 中的glib.set_application_name)进行修改。如果这不起作用,请尝试g_set_prgname

更新:旧版本的 PyGTK 将它们放在 gobject 模块中,所以试试吧。不要忘记检查这两个函数,因为 set_application_name 是相当新的。

如果还是不行,最后的办法是使用 ctypes,例如

import ctypes
libglib = ctypes.CDLL('libglib-2.0.so')
libglib.g_set_application_name("Hello World")

如果这不起作用,你的 glib 可能太旧了;我不知道还有其他解决方法。

【讨论】:

我正在运行 Python 2.4.3 和 PyGTK 2.10.1。这个功能是在更新的版本中添加的吗?我的安装中似乎缺少glib 这个答案是正确的,但不幸的是我的 PyGTK 版本不够新,无法使用它。此外,ctypes 直到 Python 2.5 才可用。 嗯,也许可以试试dl。我无法测试,因为它已从 Python 2.7 消失,但它应该类似于 import dl; dl.open('libglib-2.0.so').call('g_set_application_name', "Hello") 运气不好,我得到SystemError: module dl requires sizeof(int) == sizeof(long) == sizeof(char*)。不过,谢谢。

以上是关于分组窗口在窗口列表中显示脚本名称而不是标题的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:按名称分组数据并显示在展开列表中

重学SQL窗口函数

MySQL = 按月份分组销售计数,然后将月份显示为名称(Jan、Feb...DEC)而不是数值(1、2、3-12)

窗口聚合函数与分组聚合函数的异同

窗口函数,尝试从连接表中的列中按 created_at 排序而不分组

为啥 itertools.groupby 可以将 NaN 分组在列表中而不是 numpy 数组中