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