Mac OS X 上的 wxPython:创建 wx.Frame 而不窃取焦点

发布于 2024-09-09 03:47:33 字数 329 浏览 5 评论 0原文

我设法让它在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远山浅 2024-09-16 03:47:33

如果你想在 Mac 中获得窗口的本机句柄,你可以这样做

frame.MacGetTopLevelWindowRef()

,也许你可以使用 pyobjc 进行交互原生窗口,但为什么不在打开迷你框架后将焦点设置在您想要的窗口上呢?

If you want to get native handle to window in Mac you can do

frame.MacGetTopLevelWindowRef()

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?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文