wx.aui.AuiManager部分/布局翻译

wx.aui.AuiManager

wx.aui.AuiManager 是AUI框架类中的主要类

wx.aui.AuiManager管理于指定的wx.Frame相关联的窗口,通过使用窗口的wx.aui.AuiPaneInfo信息决定每个窗口停靠和浮动的行为。

在每一个frame中,wx.aui.AuiManager 使用wxWidgets的sizer机制来决定布局。它使用一个可替换的dock art类来完成绘制,因此在一个区域中的所有绘制都是本地化的,并且可以根据应用程序的特定需求进行定制。

wx.aui.AuiManager的工作方式如下:程序员将panes(窗格)添加入类中,或者更改了已存在的pane属性(停靠位置,浮动状态,显示状态等等)。为了应用这些更改,需要调用wx.aui.AuiManager的Update方法。每次修改多个窗格,然后通过调用Update一次性提交所有更改,这种批处理可以用来避免闪烁。

可以这样很容易的添加Panes:

text1 = wx.TextCtrl(self)
text2 = wx.TextCtrl(self)
self.mgr.AddPane(text1, wx.LEFT, "Pane Caption")
self.mgr.AddPane(text2, wx.BOTTOM, "Pane Caption")
self.mgr.Update()

稍后也可以很容易的修改位置,下面的语句将在工作窗口中浮动一个现有pane(窗格)

self.mgr.GetPane(text1).Float()

 Layers, Rows and Directions, Positions

在Aui内部,通过检查一些pane的参数来确定dock的布局,其中4个对于确定pane的最终位置非常重要:

  • Direction:每一个docked pane(停靠面板)都有一个direction(方向),Top,Bottom,Left,Right,or Center。这是一目了然的。pane(面板)将被放置在该变量指定的位置。
  • Position:可以将一个以上的pane放置在dock内部。想象一下两个面板(panes)停靠在窗口的左边。一个窗格可以放置在另一个窗格之上。在按比例管理的dock中,pane的position表示它的顺序位置,从零开始。所以,在我们设想的停靠在左边的含有两个panes的dock中,上层的pane的position为0,第二个的position为1。
  • Row:一个row(行)可以放置两个相邻的dock。最常见的情况之一是在工具栏中。多个工具栏是允许的,第一个row为0,第二个为1。Rows也可以在垂直的docked panes(停靠窗口)中使用。
  • Layer(层):一个layer类似于一个洋葱。Layer 0 是managed pane(管理面板)的中心。因此,如果一个pane位于layer 0中,它将是离中心窗口最近的(有时候也被称为“内容窗口”)。增加的layers(层)会“吞噬”所有低一级的层。这看起来很像(multiple rows)多层,但却是不同的因为所有的底层中的所有panes都是包含于高层中的。理解层的最好方式就是运行AUI实例。
  
  
posted @ 2018-09-14 16:35  xiaoblue  阅读(481)  评论(0编辑  收藏