如果您真的想浏览目录结构:
import os
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.dir = wx.GenericDirCtrl(self.panel, size=(200, -1), style=wx.DIRCTRL_DIR_ONLY)
self.files = wx.ListCtrl(self.panel, style=wx.LC_LIST)
self.sizer = wx.BoxSizer()
self.sizer.Add(self.dir, flag=wx.EXPAND)
self.sizer.Add(self.files, proportion=1, flag=wx.EXPAND)
self.border = wx.BoxSizer()
self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)
self.panel.SetSizerAndFit(self.border)
self.Show()
self.dir.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelect)
def OnSelect(self, e):
self.files.ClearAll()
list = os.listdir(self.dir.GetPath())
for a in reversed(list):
self.files.InsertStringItem(0, a)
app = wx.App(False)
win = MainWindow(None, size=(600, 400))
app.MainLoop()
这里有一些有用的例子:
如果你只是想要类似的小部件,可以看看 wx.lib.agw.customtreectrl
。这可能不完全符合你的需要,但是在wxPython中有这个小部件的源代码,所以你可以修改它来满足你的需求。
import wx
import wx.lib.agw.customtreectrl as CT
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.dir = CT.CustomTreeCtrl(self.panel, size=(100, -1),
style=wx.SUNKEN_BORDER,
agwStyle=CT.TR_FULL_ROW_HIGHLIGHT | CT.TR_HIDE_ROOT | CT.TR_NO_LINES | CT.TR_ROW_LINES)
root = self.dir.AddRoot("The Root Item")
child = self.dir.AppendItem(root, "Test")
child = self.dir.AppendItem(child, "Test 2")
child = self.dir.AppendItem(child, "Test 3")
child = self.dir.AppendItem(root, "Test 4")
self.dir.ExpandAll()
self.sizer = wx.BoxSizer()
self.sizer.Add(self.dir, proportion=1, flag=wx.EXPAND)
self.border = wx.BoxSizer()
self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)
self.panel.SetSizerAndFit(self.border)
self.Show()
app = wx.App(False)
win = MainWindow(None, size=(200, 300))
app.MainLoop()