分组窗口在窗口列表中显示脚本名称而不是标题
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*)
。不过,谢谢。以上是关于分组窗口在窗口列表中显示脚本名称而不是标题的主要内容,如果未能解决你的问题,请参考以下文章
MySQL = 按月份分组销售计数,然后将月份显示为名称(Jan、Feb...DEC)而不是数值(1、2、3-12)