我想要处理MAXIMIZE事件。当最大化它时,它工作得很好,但是当我想还原它时,它甚至不会设置EVT_MAXIMIZE,即使文档中说最大化和还原时会调用这个事件。我发现这应该是文档中的一个错误,这里是link,但我仍然不知道在恢复最大化时设置了哪个事件。
这是我的.Bind方法。它是MyFrame __init__:格式的
self.Bind(wx.EVT_MAXIMIZE, self.onMaximize, self)下面是onMaximize函数:
def onMaximize(self, event):
print "Maximized" # Just for checking
self.fig_panel.fig.tight_layout(w_pad=2.0)
event.Skip()您是否知道如何处理最大化恢复事件。
发布于 2014-02-18 16:31:35
答案就在您提供的link中。
“要找出帧何时恢复,您可以挂钩到EVT_SIZE事件,因为它将在取消最大化过程中至少发送一次。”
self.Bind(wx.EVT_SIZE, self.OnResizeWindow)
def OnResizeWindow(self, event):
if self.IsMaximized():
self.maximized = 1
else:
self.maximized = 0
event.Skip() 发布于 2016-09-12 23:01:27
我最终在绑定到wx.EVT_SIZE的on_resize函数中使用了一个wx.CallAfter解决了这个问题
def on_resize(self, evt):
wx.CallAfter(self.fig_panel.fig.tight_layout, w_pad=2.0)
evt.Skip()如果在调整窗口大小时要调用多个函数,可以这样做:
def on_resize(self, evt):
wx.CallAfter(self.on_resize_after)
evt.Skip()
def on_resize_after(self):
self.fig_panel.fig.tight_layout(w_pad=2.0)
# add more layout adjustment functions here这在Gtk上的wxPython Phoenix3.0.3上运行得很好。它响应最大化/恢复,而不必将函数绑定到wx.EVT_MAXIMIZE。
https://stackoverflow.com/questions/21847487
复制相似问题