【问题标题】:wxPython windows stuck in backgroundwxPython窗口卡在后台
【发布时间】:2012-07-16 06:58:05
【问题描述】:

我有一个 wxPython 项目,它在 Windows 7 中显示出一些奇怪的症状(在 Mac OS X 上一切正常,Windows 7 是我们针对此版本测试的唯一 win 版本)。该应用程序有一个 wx.TaskBarIcon 的子类,它带有一个右键单击菜单,该菜单应创建应始终位于顶部的窗口。每个窗口都是 wxFormBuilder 创建的 wx.Frame 或 wx.Dialog 的子类。

有时,我找不到重现它的步骤,窗口不显示并且不能被调用到前面。应用程序的图标将出现在任务栏中,但不会出现窗口。单击该图标不会执行任何操作,即使关闭所有其他窗口也不会显示该窗口。

我当前如何显示窗口的片​​段:

#Initialization code, calling super's __init__ etc.
self.Center()
self.Show()
self.SetWindowStyle( self.GetWindowStyle() | wx.STAY_ON_TOP )

由于我无法重现调试问题,因此很难。我试过在 self.Show 之后调用 self.Raise 和 self.SetFocus ,但问题不时出现。有没有人遇到过类似的 wxPython 问题或知道任何可能的解决方法?

【问题讨论】:

    标签: python windows-7 wxpython


    【解决方案1】:

    我记得,您通常无法在初始化后可靠地更改 Frame 样式。您应该将 STAY_ON_TOP 样式标志放在 Frame 的 init 中。对于对话框,使用 ShowModal()。现在我想了想,你也可以使用框架的 MakeModal() 方法,这可能也可以。

    【讨论】:

    • 谢谢。使用 ShowModal 并不是一个真正的选择,因为对话框不能被阻塞。但我认为(正如我所说,当我不知道是什么原因时无法真正测试它)你关于初始化后更改样式的评论对我有用:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2018-06-29
    相关资源
    最近更新 更多