본문 바로가기

Programming/Python_Etc

wxpython 폴더 트리 컨트롤

반응형
import wx
import wx.grid as gridlib
import os


class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="FlexGridSizer Example")
        self.SetSize(1020, 600)

        self.mainPanel = wx.Panel(self)
        self.vtBoxSizer = wx.BoxSizer(wx.HORIZONTAL)  # 전체 레이아웃
        self.fgridSizer1 = wx.FlexGridSizer(rows=2, cols=1, hgap=5, vgap=5)  # 좌측 레이아웃
        self.fgridSizer2 = wx.FlexGridSizer(rows=2, cols=1, hgap=5, vgap=5)  # 중앙 레이아웃
        self.hrboxSizer = wx.BoxSizer(wx.HORIZONTAL)                         # 중앙 상단세부 레이아웃

        # 좌측: 1번 소스 드라이브, 2번 소스 트리
        self.SrcDir = wx.GenericDirCtrl(self.mainPanel, -1,
                                        size=(250, 450),
                                        dir='C:/',
                                        style=wx.DIRCTRL_SHOW_FILTERS |
                                              wx.DIRCTRL_3D_INTERNAL |
                                              wx.DIRCTRL_MULTIPLE)
        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelect)
        self.SrcList = wx.TextCtrl(self.mainPanel, style=wx.TE_MULTILINE)

        self.fgridSizer1.Add(self.SrcDir, 1, wx.EXPAND)
        self.fgridSizer1.Add(self.SrcList, 1, wx.EXPAND)

        # 중앙 찾기 옵션 / search / save / 리스트 뷰

        self.radio1 = wx.RadioButton(self.mainPanel, -1, "파일명")
        self.radio2 = wx.RadioButton(self.mainPanel, -1, "자료명")
        self.radio3 = wx.RadioButton(self.mainPanel, -1, "자료세부")
        self.findButton = wx.Button(self.mainPanel, -1, "search")
        self.saveButton = wx.Button(self.mainPanel, -1, "save")
        self.hrboxSizer.Add(self.radio1, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.radio2, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.radio3, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.findButton, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.saveButton, 1, wx.EXPAND)

        self.Bind(wx.EVT_BUTTON, self.OnSearch, self.findButton)

        self.dataGrid = gridlib.Grid(self.mainPanel, wx.EXPAND)
        self.dataGrid.CreateGrid(50, 6)

        self.fgridSizer2.Add(self.hrboxSizer, 1, wx.ALIGN_CENTRE_HORIZONTAL|wx.EXPAND)
        self.fgridSizer2.Add(self.dataGrid, 1, wx.EXPAND|wx.ALL)


        # 좌/중/우 결합
        self.vtBoxSizer.Add(self.fgridSizer1, 0, wx.RIGHT | wx.EXPAND)
        self.vtBoxSizer.Add((20,20))
        self.vtBoxSizer.Add(self.fgridSizer2, 1, wx.EXPAND)

        # 사이즈 변경 조절
        self.fgridSizer1.AddGrowableRow(1)
        self.fgridSizer1.AddGrowableCol(0)
        self.fgridSizer2.AddGrowableRow(1)
        self.fgridSizer2.AddGrowableCol(0)

        self.mainPanel.SetSizer(self.vtBoxSizer)

    def OnSelect(self, e):
        items = os.listdir(self.SrcDir.GetPath())

        self.SrcList.Clear()

        for item in items:
            self.SrcList.AppendText(item + '\n')

    def OnSearch(self, e):
        if self.radio1.Value == True:
            print(self.dataGrid.GetNumberRows())
            #for i in range(0, 10, 1):
            #    print(self.dataGrid.GetCellValue(i, 0))


if __name__ == "__main__":
    app = wx.App()
    frm = MyFrame()
    frm.Show()
    app.MainLoop()

 

반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxpython GridBagSizer 예제  (0) 2020.06.21
pandas CSV파일 읽기 - 인코딩 에러  (0) 2020.06.21
wxpython 간단한 트리  (0) 2020.06.17
wxpython 폴더 트리  (0) 2020.06.16
wxpython 간단한 메뉴  (0) 2020.06.16