自从开始学wxPython以来就一直想找到一个树形目录控件,但却一直没找到,我还以为wxPython根本就没有提供这样的控件。前几天无意中在wxPython演示文件里找到了这个控件,欣喜若狂,小研究了下,编写了一个小型的演示,可以输出所激活文件的路径名。代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2009-10-17
@author: jon.ju@msn.com
'''
import wx
import os
import sys
class myApp(wx.App):
def OnInit(self):
frame=wx.Frame(parent=None,title='GenericDirCtrl')
panel=wx.Panel(frame,-1)
# 目录控件
self.dir1 = wx.GenericDirCtrl(panel, -1,dir="E:", size=(200,225), style=0)
# 目录控件中的树形控件
self._tree=self.dir1.GetTreeCtrl()
# 绑定激活文件行为,如双击文件时
self.dir1.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnOpen)
frame.Show()
return True
# 双击文件时显示文件路径
def OnOpen(self,evt):
# 如果对象是目录,则打印'这是目录'
if os.path.isdir(self.dir1.GetPath()):
print '这是目录'
evt.Skip()
return
# 如果对象是文件,则显示文件目录
else:
print self.dir1.GetFilePath().encode(sys.getfilesystemencoding())
if __name__=='__main__':
app=myApp(False)
app.MainLoop()
这里所用到的树形目录控件就是GenericDirCtrl,它继承自wxPython的树控件,所以树控件的属性和行为,GenericDirCtrl都是可以直接使用的。