wxPython разделитель окон и панелей - PullRequest
0 голосов
/ 26 ноября 2011

Я пытаюсь создать селектор файлов, используя 2 GenericDirCtrl, которые отображают файлы в выбранной директории под ними. Мой вопрос: лучше ли поместить окно разделителя как дочерний элемент фрейма и добавить панель, содержащую элемент управления, в окно разделителя или встроить окно разделителя в панель с дочерним элементом панели фрейма?

1 Ответ

0 голосов
/ 28 ноября 2011

Когда я использовал окно SplitterWindow, я поместил его в рамку и дал каждой стороне свою панель.Но вы должны быть в состоянии сделать: Frame, Panel, SplitterWindow так же легко.

Вот общий пример:

import wx
import wx.grid as gridlib

########################################################################
class LeftPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)

        grid = gridlib.Grid(self)
        grid.CreateGrid(25,12)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 0, wx.EXPAND)
        self.SetSizer(sizer)

########################################################################
class RightPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        txt = wx.TextCtrl(self)


class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Splitter Tutorial")

        splitter = wx.SplitterWindow(self)
        leftP = LeftPanel(splitter)
        rightP = RightPanel(splitter)

        # split the window
        splitter.SplitVertically(leftP, rightP)
        splitter.SetMinimumPaneSize(20)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(splitter, 1, wx.EXPAND)
        self.SetSizer(sizer)

# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()
...