【问题标题】:Is it possible to dock wx.auiManager panes onto tops/bottoms of another panes?是否可以将 wx.auiManager 窗格停靠到另一个窗格的顶部/底部?
【发布时间】:2010-03-03 22:49:28
【问题描述】:

使用此代码:

import wx
import wx.aui

class MyFrame(wx.Frame):

    def __init__(self, parent, id=-1, title='wx.aui Test',
                 pos=wx.DefaultPosition, size=(800, 600),
                 style=wx.DEFAULT_FRAME_STYLE):
        wx.Frame.__init__(self, parent, id, title, pos, size, style)

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

        # create several text controls
        text1 = wx.TextCtrl(self, -1, 'Pane 1 - sample text',
                            wx.DefaultPosition, wx.Size(200,150),
                            wx.NO_BORDER | wx.TE_MULTILINE)

        text2 = wx.TextCtrl(self, -1, 'Pane 2 - sample text',
                            wx.DefaultPosition, wx.Size(200,150),
                            wx.NO_BORDER | wx.TE_MULTILINE)


        info = wx.aui.AuiPaneInfo()
        info.CaptionVisible(True)
        info.BottomDockable(False)
        info.LeftDockable(False)
        info.RightDockable(False)
        info.PaneBorder(False)
        info.Top()
        info.Row(1)

        info2 = wx.aui.AuiPaneInfo()
        info2.CaptionVisible(True)
        info2.BottomDockable(False)
        info2.LeftDockable(False)
        info2.RightDockable(False)
        info2.Top()
        info2.Row(2)

        self._mgr.AddPane(text1, info, 'Pane Number One')
        self._mgr.AddPane(text2, info2, 'Pane Number Two')

        self._mgr.Update()

        self.Bind(wx.EVT_CLOSE, self.OnClose)


    def OnClose(self, event):
        self._mgr.UnInit()
        self.Destroy()


app = wx.App()
frame = MyFrame(None)
frame.Show()
app.MainLoop()

我创建的两个窗格停靠在顶部。 info.Row(1) 和 info2.Row(2) 将两个窗格一个接一个地放置:

_TOP_
Pane1
Pane2

现在,如果我在 Pane2 上移动,它会停靠在顶部并且会出现这种情况:

_TOP_
Pane1|Pane2

我想要: 1.为了避免这种情况(每行只有一个窗格!) 2. 如果我移动,将窗格停靠在另一个窗格的底部/顶部

这可能吗?

【问题讨论】:

    标签: python wxpython dock


    【解决方案1】:

    也许AuiNotebook wxPython 示例适合您?

    import wx
    import wx.aui
    
    ########################################################################
    class TabPanel(wx.Panel):
        """
        This will be the first notebook tab
        """
        #----------------------------------------------------------------------
        def __init__(self, parent):
            """"""
    
            wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY)
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            txtOne = wx.TextCtrl(self, wx.ID_ANY, "")
            txtTwo = wx.TextCtrl(self, wx.ID_ANY, "")
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(txtOne, 0, wx.ALL, 5)
            sizer.Add(txtTwo, 0, wx.ALL, 5)
    
            self.SetSizer(sizer)
    
    class DemoPanel(wx.Panel):
        """
        This will be the first notebook tab
        """
        #----------------------------------------------------------------------
        def __init__(self, parent):
            """"""
            wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY)
    
            # create the AuiNotebook instance
            nb = wx.aui.AuiNotebook(self)
    
            # add some pages to the notebook
            pages = [(TabPanel(nb), "Tab 1"),
                     (TabPanel(nb), "Tab 2"),
                     (TabPanel(nb), "Tab 3")]
            for page, label in pages:
                nb.AddPage(page, label)
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(nb, 1, wx.EXPAND)
            self.SetSizer(sizer)
    
    ########################################################################
    class DemoFrame(wx.Frame):
        """
        Frame that holds all other widgets
        """
    
        #----------------------------------------------------------------------
        def __init__(self):
            """Constructor"""
            wx.Frame.__init__(self, None, wx.ID_ANY,
                              "AUI-Notebook Tutorial",
                              size=(600,400))
            panel = DemoPanel(self)
            self.Show()
    
    #----------------------------------------------------------------------
    if __name__ == "__main__":
        app = wx.PySimpleApp()
        frame = DemoFrame()
        app.MainLoop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多