Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用wx.aui.AuiManager';s地址窗格_Python_User Interface_Wxpython - Fatal编程技术网

Python 使用wx.aui.AuiManager';s地址窗格

Python 使用wx.aui.AuiManager';s地址窗格,python,user-interface,wxpython,Python,User Interface,Wxpython,在使用wxPython的应用程序中,我使用wx.aui.AuiManager作为主框架的布局。对于用户触发的特定事件,框架中应显示两个窗格。我可以添加它们,使它们出现在框架中的正确位置(右侧),但我一直在努力调整每个窗格的大小。如果self.\u mgr=wx.aui.AuiManager(),我只需使用 self._mgr.AddPane(mypanel1, wx.aui.AuiPaneInfo(). Name("MyPanel1").

在使用wxPython的应用程序中,我使用wx.aui.AuiManager作为主框架的布局。对于用户触发的特定事件,框架中应显示两个窗格。我可以添加它们,使它们出现在框架中的正确位置(右侧),但我一直在努力调整每个窗格的大小。如果
self.\u mgr=wx.aui.AuiManager()
,我只需使用

self._mgr.AddPane(mypanel1, wx.aui.AuiPaneInfo().
                      Name("MyPanel1").
                      Caption("MyPanel1").
                      MinSize(MyPanel1.GetBestSize()).
                      BestSize(MyPanel1.GetBestSize()).
                      Right().Layer(1).Position(0).CloseButton(True).
                      MaximizeButton(False))

self._mgr.AddPane(mypanel2, wx.aui.AuiPaneInfo().
                      Name("MyPanel2").
                      Caption("MyPanel2").
                      MinSize(MyPanel2.GetBestSize()).
                      BestSize(MyPanel2.GetBestSize()).
                      Right().Layer(1).Position(1).CloseButton(True).
                      MaximizeButton(False))

self._mgr.Update()
问题是,当运行软件并打开这两个面板(它们同时弹出)时,每个面板的高度是height_frame*0.5,但我希望它们的高度是height_panel1=0.3*height_frame,height_panel2=0.7*height_frame

见下面的例子。上图是我最后看到的,panel1和Panel2具有相同的高度(框架中可用高度的一半)。最底层是我想要的,每个面板之间都有一定的比例

    +---------------------------------+    
    |                    +-----------+|    ^ F
    |    MAIN FRAME      | panel1    ||    | r
    |                    |           ||    | a
    |                    |           ||    | m
    |                    |           ||    | e
    |                    +-----------+|    |    
    |                    | panel2    ||    | h
    |                    |           ||    | e
    |                    |           ||    | i
    |                    |           ||    | g
    |                    +-----------+|    v h
    +---------------------------------+      t


    +---------------------------------+
    |                    +-----------+|
    |    MAIN FRAME      | panel1    ||
    |                    |           ||
    |                    +-----------+|
    |                    | panel2    ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    +-----------+|
    +---------------------------------+
为了解决这个问题,我尝试在AddPane调用中使用MinSize和BestSize参数(即
BestSize(wx.Size(1000,1000))
),但结果是两个面板的宽度发生变化,但每个面板的高度仍然相同(父框架高度的一半)

请注意,我希望panel1和panel2(30/70)之间的比例相同,即使重新缩放父主框架,但用户也应该能够通过“像往常一样”拖动面板来重新缩放它们(这是我现在必须做的事情,以便从50/50到30/70…但此功能当然仍然可用)


对于如何解决此问题,是否有任何建议/解决方案?提前谢谢

我通过动态计算面板的最小和最佳尺寸来解决这个问题

谢谢你的skybobbi!在反复修改之后,我发现在
self.Update()
之前添加以下行可以修复它:
self.\u-mgr.GetPane(“MyPanel1”).dock\u-proportion=10
self.\u-mgr.GetPane(“MyPanel1”).dock\u-proportion=25