Mac OS X 上的 wxPython:创建 wx.Frame 而不窃取焦点
我设法让它在 Win32 上工作(继承 wx.MiniFrame 就可以了),在 wxGTK (wx.PopupWindow) 上工作,但无论我尝试什么,当我在 wxMac 上创建框架时,我的主窗口失去焦点,新框架获得焦点。
wxMac 似乎没有办法与本机平台交互(类似于 Win32 上的 GetHandle() 和 wxGTK 上的 GetGTKWidget()),所以我无法通过这种方式破解它。
我设法在另一种情况下工作,方法是在启动时创建框架并将其移到显示区域之外,然后在需要时将其移到可见位置。但现在这会很麻烦,因为我事先不知道需要多少帧。
那么,有什么更简单的方法可以做到这一点吗?
I managed to get it working on Win32 (inheriting from wx.MiniFrame does the trick), on wxGTK (wx.PopupWindow) but whatever I try, when I create a frame on wxMac, my main window loses focus and the new frame gets it.
wxMac does not seem to have a way to interact with the native platform (something like GetHandle() on Win32 and GetGTKWidget() on wxGTK), so I can't hack around it this way.
I managed to get this working in another situation, by creating the frame at startup and moving it outside of the display area, then moving it in a visible position when needed. But right now this would be cumbersome because I don't know in advance how many frames I will need.
So, any simpler way to do this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你想在 Mac 中获得窗口的本机句柄,你可以这样做
,也许你可以使用 pyobjc 进行交互原生窗口,但为什么不在打开迷你框架后将焦点设置在您想要的窗口上呢?
If you want to get native handle to window in Mac you can do
and may be you can use pyobjc to interact with windows natively, but why don't you set focus on the window you want to after opening mini-frame?