我正在编写一个 wxPython 应用程序,该应用程序在关闭其所有窗口后仍保持打开状态 - 因此您仍然可以将新文件拖放到 OSX 停靠图标上(我使用 来执行此操作myApp.SetExitOnFrameDelete(False)
)。
不幸的是,如果我关闭所有窗口,OSX 菜单栏将只包含一个“帮助”菜单。我想至少添加一个文件/打开菜单项,或者只保留主窗口的菜单栏。这在 wxPython 中可能吗?
事实上,我也会对非 wxPython hack 感到满意(例如,在 pyobjc 中设置菜单,但在 wxPython 中运行 GUI 的其余部分)。无论如何,OSX 中的 wxPython 开发都是一种 hack ;)
更新:我设法使用 Lyndsey Ferguson 的提示解决了这个问题。这是我所做的:
- 在启动时,我创建一个窗口,我立即显示和隐藏。我将它的位置设置为
(-10000,-10000)
它不会在屏幕上闪烁(啊,多么肮脏的黑客!) - 我在该窗口中创建了一个空的 EVT_CLOSE 事件处理程序,以使其无法关闭。
- 似乎销毁一个窗口会重置 OSX 菜单,但隐藏不会......所以当最后一个窗口关闭时,我需要再次显示和隐藏这个窗口(隐藏是必要的,这样用户就无法使用窗口菜单或 Cmd-`)
是的,这真的很丑……如果有人提出更漂亮的解决方案,我将不胜感激。
更新 2:实际上它可以通过更简单的方式解决:如果我们不关闭最后一个窗口,则只隐藏它。并确保它不再响应菜单事件。