1

我需要在 Linux (Ubuntu) 上设置 Python wxWidgets 应用程序窗口的类名。默认情况下,它设置为“python”。

我曾尝试在 app 对象上调用 SetAppName() 和 SetClassName() 方法,但这似乎没有任何效果。

基本上我想要做的是将应用程序窗口的类名更改为自定义值,这样我就可以将它与 Cairo 码头中的图标相关联。

该应用程序是 Pronterface ( https://github.com/kliment/Printrun )。

更多细节


基本上现在我在开罗码头上有一个启动器图标,它有正确的 Pronterface 图标(我可以手动设置图标)。

问题是当我启动 Pronterface Cairo Dock 时,Pronterface 窗口没有与启动器相关联。它会在启动器上创建一个带有 Python 徽标的新图标。

有一个启动器选项可以输入程序类名称(以及从打开的窗口中抓取它的工具),以便 Cairo Dock 可以识别属于启动器的窗口。

问题是 Pronterface 的类名是“python”,如果我使用它,它会导致 Pronterface 启动器与任何 wxWidget python 应用程序(或者可能是任何 python UI 应用程序)相关联,而不仅仅是 Pronterface 窗口。

这就是为什么我想更改班级名称。

4

1 回答 1

2

您可能正在寻找 wx.App 的 SetAppName() 方法。或者,还有框架的 SetTitle() 方法,但我猜你已经尝试过了。

编辑:

我在wxPython-dev上询问了这个问题,他们让我想起了我从 Windows 中回忆的东西。您可能需要使用 PyInstaller 之类的工具来冻结您的应用程序以使其正常工作。另一方面,这就是 wxPython 的创建者 Robin Dunn 不得不说的:

在 X11 库应用程序和窗口的深处,可以为应用程序和窗口分配一个字符串以用作类名。在过去,当 Motif 工具包为王时,允许用户使用他们的 .Xdefaults 文件在应用程序中自定义 UI 元素是很常见的。这很像今天的 CSS,您可以在其中设置项目的颜色、字体或其他属性。如果小部件名称和类名称由应用程序程序员设置,则可以为特定类型的所有元素(如按钮)或具有特定类名称的所有元素设置属性,您还可以指定小部件或类(或全部)在某个包含层次结构中,等等。

所有这些仍然存在于 X 和 Xt 库中,但我不熟悉 GTK 如何(或是否)公开它或利用它本身。在旧的 wxMotif 端口中,wx 使用传递给 SetName 方法的任何内容设置 X 小部件名称,但我认为它在 wxGTK 端口中使用该名称并没有做任何特殊的事情。

于 2013-08-06T14:45:48.257 回答