我有一个带wx.StatusBar
的主窗口,我认为这是非常标准的方式:
class MainWindow(wx.Frame):
"Obviously, the main window..."
def __init__(self, parent, title, appState, installTypes):
wx.Frame.__init__(self, parent, title=title)
# [...]
# and StatusBar (which puts itself in the bottom of the window)
self.CreateStatusBar()
我有一堆菜单,在StatusBar中显示他们的帮助:
# Auto-exit toggle:
menuOptionsAutoExit = optionsmenu.Append(ID_OPTIONS_AUTO_EXIT,
_("&Auto-exit"),
_("Have CMH exit after showing the status"),
kind = wx.ITEM_CHECK)
但是我的控制器中也有需要在状态栏中报告的事件。其中每个都有两个需要在StatusBar中完成的操作:显示通知("正在发生的事情")然后删除它。
问题在于,如果用户在菜单项上进行了鼠标操作(以便在我执行&时,项目的帮助已经替换了"某些事情发生在状态栏中?#34; #34;删除消息",结果是错过了删除,并且在他们鼠标离开菜单项后,我离开了"正在发生的事情"永远。
我已经尝试了几乎所有我能想到的使用SetStatusText()
或PushStatusText()
组合来放置"正在发生的事情"和PopStatusText()
或SetStatusText('')
清除它。无论我做什么,通过在设置状态消息和清除它之间弄乱菜单,我最终可能会发生一些事情正在发生的事情"卡在那里。
什么是正确的食谱?
(wxpython 3.0.0.0,OSX和Win7下的相同行为)
答案 0 :(得分:1)
一些解决方法,但可能适合你。
self.CreateStatusBar(2)
self.SetStatusText("A Custom StatusBar...", 1)
wx.CallLater(10000, self.SetStatusText, "", 1)
因此,请勿使用状态栏上的第一个字段来显示消息。