Шаблон сплитера
#!/usr/bin/python # -*- coding: utf-8 -*- import wx import os import time ID_BUTTON=100 ID_EXIT=200 ID_SPLITTER=300 class MyListCtrl(wx.ListCtrl): def __init__(self, parent, id): wx.ListCtrl.__init__(self, parent, id, style=wx.LC_REPORT) #~ files = os.listdir('.') # чётность #~ if (j % 2) == 0: #~ self.SetItemBackgroundColour(j, '#e6f1f5') #~ j = j + 1 class FileHunter(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, -1, title) self.splitter = wx.SplitterWindow(self, ID_SPLITTER, style=wx.SP_BORDER) self.splitter.SetMinimumPaneSize(50) p1 = MyListCtrl(self.splitter, -1) p2 = MyListCtrl(self.splitter, -1) self.splitter.SplitVertically(p1, p2) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SPLITTER_DCLICK, self.OnDoubleClick, id=ID_SPLITTER) self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.Bind(wx.EVT_BUTTON, self.OnExit, id=ID_EXIT) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.splitter,1,wx.EXPAND) self.sizer.Add(self.sizer2,0,wx.EXPAND) self.SetSizer(self.sizer) size = wx.DisplaySize() self.SetSize(size) #~ self.sb = self.CreateStatusBar() #~ self.sb.SetStatusText(os.getcwd()) self.Center() self.Show(True) def OnExit(self,e): self.Close(True) def OnSize(self, event): size = self.GetSize() self.splitter.SetSashPosition(size.x / 2) #~ self.sb.SetStatusText(os.getcwd()) event.Skip() def OnDoubleClick(self, event): size = self.GetSize() self.splitter.SetSashPosition(size.x / 2) app = wx.App(0) FileHunter(None, -1, 'File Hunter') app.MainLoop()
Мой GUI. Слитер нужно вертикальный между четырмя полями слева и списком справа. И если не сложно, то ещё бы горизонтальный сплитер между Edit-окнами редактирования.
#!/usr/bin/python # -*- coding: utf-8 -*- import wx class WinRegExp(wx.Frame): def __init__(self, parent, title): super(WinRegExp, self).__init__(parent, title=title, size=(640, 480)) self.InitUI() self.Centre() self.Show() def InitUI(self): panel = wx.Panel(self) # font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) # font.SetPointSize(9) vbox = wx.BoxSizer(wx.VERTICAL) # Создаём вертикальный бокс # Создаём бокс с лейблом hbox1 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label1 = wx.StaticText(panel, label=u'Регулярное выражение для поиска') # Создаём лейбл # Label1.SetFont(font) # Задаём шрифт hbox1.Add(Label1, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox1, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с полем ввода hbox2 = wx.BoxSizer(wx.HORIZONTAL) # Создаём 2-ой бокс input1 = wx.TextCtrl(panel) # Создаём поле ввода hbox2.Add(input1, proportion=1) # Добавляем поле ввода в бокс vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с лейблом hbox3 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label2 = wx.StaticText(panel, label=u'Шаблон замены') # Создаём лейбл # Label2.SetFont(font) # Задаём шрифт hbox3.Add(Label2, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox3, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с полем ввода hbox4 = wx.BoxSizer(wx.HORIZONTAL) # Создаём 2-ой бокс input2 = wx.TextCtrl(panel) # Создаём поле ввода hbox4.Add(input2, proportion=1) # Добавляем поле ввода в бокс vbox.Add(hbox4, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с лейблом hbox5 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label3 = wx.StaticText(panel, label=u'Текст в котором поиск') # Создаём лейбл # Label3.SetFont(font) # Задаём шрифт hbox5.Add(Label3, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox5, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с окном редактирования hbox6 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Edit3 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) # Создаём окно редактирования hbox6.Add(Edit3, proportion=1, flag=wx.EXPAND) vbox.Add(hbox6, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.EXPAND, border=10) # Создаём бокс с лейблом hbox7 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label4 = wx.StaticText(panel, label=u'Результат после обработки') # Создаём лейбл # Label4.SetFont(font) # Задаём шрифт hbox7.Add(Label4, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox7, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с окном редактирования hbox8 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Edit4 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) # Создаём окно редактирования hbox8.Add(Edit4, proportion=1, flag=wx.EXPAND) vbox.Add(hbox8, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, border=10) #~ vbox.Add((-1, 10)) # Создаём отступ vbox2 = wx.BoxSizer(wx.VERTICAL) # Создаём вертикальный бокс # Создаём бокс со списком hbox21 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс listbox1 = wx.ListBox(panel, -1) # Создаём список hbox21.Add(listbox1, proportion=1, flag=wx.EXPAND) vbox2.Add(hbox21, proportion=1, flag=wx.TOP|wx.BOTTOM|wx.RIGHT|wx.EXPAND, border=10) # Создаём бокс с кнопкой hbox22 = wx.BoxSizer(wx.HORIZONTAL) btn1 = wx.Button(panel, label=u'Старт', size=(70, 30)) hbox22.Add(btn1) #~ hbox22.Add(btn1, flag=wx.LEFT|wx.BOTTOM, border=5) vbox2.Add(hbox22, flag=wx.ALIGN_RIGHT|wx.RIGHT, border=10) mhbox = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс mhbox.Add(vbox, proportion=3, flag=wx.EXPAND, border=0) mhbox.Add(vbox2, proportion=1, flag=wx.EXPAND, border=0) #~ panel.SetSizer(vbox) panel.SetSizer(mhbox) if __name__ == '__main__': app = wx.App() WinRegExp(None, title='RegExp') app.MainLoop()