gpt4 book ai didi

python - 使用 wx.aui 时如何告诉面板它正在调整大小

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:16 25 4
gpt4 key购买 nike

我正在使用 wx.aui 来构建我的用户界面。我正在定义一个继承自 wx.Panel 的类,我需要在调整其窗口 Pane 大小时更改该面板的内容。

我使用的代码与下面的代码非常相似(它是找到的示例代码的修改版本 here )。

我的问题是:是否有一个 wx.Panel 方法被我可以重载的 AuiManager 在幕后调用?如果不是,我的 ControlPanel 对象怎么知道它正在调整大小?

例如,如果我运行此代码并向上拖动右侧上下 Pane 之间的水平分隔线,右上面板如何告知其大小刚刚改变?

import wx
import wx.aui

class ControlPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)

class MyFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)

self.mgr = wx.aui.AuiManager(self)

leftpanel = ControlPanel(self, -1, size = (200, 150))
rightpanel = ControlPanel(self, -1, size = (200, 150))
bottompanel = ControlPanel(self, -1, size = (200, 150))

self.mgr.AddPane(leftpanel, wx.aui.AuiPaneInfo().Bottom())
self.mgr.AddPane(rightpanel, wx.aui.AuiPaneInfo().Left().Layer(1))
self.mgr.AddPane(bottompanel, wx.aui.AuiPaneInfo().Center().Layer(2))

self.mgr.Update()


class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, '07_wxaui.py')
frame.Show()
self.SetTopWindow(frame)
return 1

if __name__ == "__main__":
app = MyApp(0)
app.MainLoop()

最佳答案

根据 wx.Panel 文档,wx.Panel.Layout “在调整窗口大小时由默认的 EVT_SIZE 处理程序自动调用。”

编辑:但是,上面的方法并没有像我预期的那样工作,所以尝试手动绑定(bind) EVT_SIZE:

class ControlPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
self.Bind(wx.EVT_SIZE, self.OnResize)

def OnResize(self, *args, **kwargs):
print "Resizing"

关于python - 使用 wx.aui 时如何告诉面板它正在调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com