我需要在Linux(Ubuntu)上设置Python wxWidgets应用程序窗口的类名。默认情况下,它设置为“python”。
我尝试在app对象上调用SetAppName()和SetClassName()方法,但这似乎没有任何效果。
基本上我要做的是将应用程序窗口的类名更改为自定义值,以便将其与Cairo dock中的图标相关联。
该应用程序是Pronterface(https://github.com/kliment/Printrun)。
现在基本上我在开罗码头上有一个启动器图标,它有正确的Pronterface图标(我可以手动设置图标)。
问题是当我启动Pronterface时Cairo dock没有将Pronterface窗口与启动器相关联。它会在启动器上创建一个带有窗口Python徽标的新图标。
有一个启动器选项可以输入程序类名称(以及从打开的窗口中获取它的工具),以便开罗基座可以识别属于启动器的窗口。
问题是Pronterface的类名是“python”,如果我使用它,会导致Pronterface启动器与任何wxWidget python应用程序(或者可能是任何python UI应用程序)相关联,而不仅仅是Pronterface窗口。
这就是我想改变班级名称的原因。
答案 0 :(得分:2)
您可能正在寻找wx.App的SetAppName()方法。或者,还有框架的SetTitle()方法,但我猜你已经尝试过了。
修改强>
我在wxPython-dev上询问了这个问题,他们让我想起了我从Windows回忆起的事情。您可能需要使用类似PyInstaller的东西冻结您的应用程序才能使其正常工作。另一方面,这就是wxPython的创造者Robin Dunn所说的:
深入X11库中的应用程序和windows可以 分配了一个用作类名的字符串。在过去的时候 Motif工具包是王道,允许用户非常普遍 使用他们的应用程序自定义应用程序中的UI元素 .Xdefaults文件。这很像今天的CSS,你可以设置 项目的颜色,字体或其他属性。如果小部件命名 和类名由应用程序员设置然后 可以为某个类型的所有元素设置属性,如a 按钮,或具有特定类名的所有元素,您可以 还指定某个小部件或类(或所有小部件) 包含层次结构等
所有这些仍然存在于X和Xt的封面下 库,但我不熟悉GTK如何(或如果)暴露这些或 自己利用它。在旧的wxMotif端口wx中设置X小部件 使用传递给SetName方法的任何名称,但我不认为 它在wxGTK端口中使用名称做了一些特殊的事情。