首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxpython EVT_MAXIMIZE恢复

wxpython EVT_MAXIMIZE恢复
EN

Stack Overflow用户
提问于 2014-02-18 16:01:12
回答 2查看 900关注 0票数 2

我想要处理MAXIMIZE事件。当最大化它时,它工作得很好,但是当我想还原它时,它甚至不会设置EVT_MAXIMIZE,即使文档中说最大化和还原时会调用这个事件。我发现这应该是文档中的一个错误,这里是link,但我仍然不知道在恢复最大化时设置了哪个事件。

这是我的.Bind方法。它是MyFrame __init__:格式的

代码语言:javascript
复制
self.Bind(wx.EVT_MAXIMIZE, self.onMaximize, self)

下面是onMaximize函数:

代码语言:javascript
复制
def onMaximize(self, event):

    print "Maximized"                            # Just for checking
    self.fig_panel.fig.tight_layout(w_pad=2.0)
    event.Skip()

您是否知道如何处理最大化恢复事件。

EN

回答 2

Stack Overflow用户

发布于 2014-02-18 16:31:35

答案就在您提供的link中。

“要找出帧何时恢复,您可以挂钩到EVT_SIZE事件,因为它将在取消最大化过程中至少发送一次。”

代码语言:javascript
复制
self.Bind(wx.EVT_SIZE, self.OnResizeWindow)

def OnResizeWindow(self, event):
    if self.IsMaximized():
            self.maximized = 1
    else:
            self.maximized = 0
    event.Skip() 
票数 1
EN

Stack Overflow用户

发布于 2016-09-12 23:01:27

我最终在绑定到wx.EVT_SIZE的on_resize函数中使用了一个wx.CallAfter解决了这个问题

代码语言:javascript
复制
def on_resize(self, evt):
    wx.CallAfter(self.fig_panel.fig.tight_layout, w_pad=2.0)
    evt.Skip()

如果在调整窗口大小时要调用多个函数,可以这样做:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21847487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档