码迷,mamicode.com
首页 > 其他好文 > 详细

GUI 文件遍历系统 (listdir.py)可显示中文目录文件版

时间:2015-07-06 15:42:14      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

这个应用程序是一个目录树遍历工具。它从当前目录开始并提供文件列表功能。双击列表中的任意其他目录都会让该工具转向这个新的目录,同时用新目录中的文件列表替换原有的文件列表。

运行效果图:

技术分享

 

#coding:gbk
import os
from time import sleep
from Tkinter import *

class DirList(object):
    def __init__(self,initdir=None):
        self.top = Tk()
        self.label = Label(self.top,text=‘Directory Lister v1.1‘)
        self.label.pack()
        self.cwd = StringVar(self.top)
        self.dir1 = Label(self.top,fg=‘blue‘,font=(‘Helvetica‘,12,‘bold‘))
        self.dir1.pack()
        self.dirfm = Frame(self.top)
        self.dirsb = Scrollbar(self.dirfm)
        self.dirsb.pack(side=RIGHT,fill=Y)
        self.dirs = Listbox(self.dirfm,height=15,
                            width=50,yscrollcommand=self.dirsb.set)
        self.dirs.bind(‘<Double-1>‘,self.setDirAndGo)
        self.dirsb.config(command=self.dirs.yview)
        self.dirs.pack(side=LEFT,fill=BOTH)
        self.dirfm.pack()

        self.dirn = Entry(self.top,width=50,
                          textvariable=self.cwd)
        self.dirn.bind(‘<Return>‘,self.doLS)
        self.dirn.pack()
        self.bfm = Frame(self.top)
        self.clr = Button(self.bfm,text=‘Clear‘,
                          command=self.clrDir,
                          activeforeground=‘white‘,
                          activebackground=‘blue‘)
        self.ls = Button(self.bfm,text=‘List Directory‘,
                         command=self.doLS,
                         activeforeground=‘white‘,
                         activebackground=‘green‘)
        self.quit = Button(self.bfm,text=‘Quit‘,
                           command=self.top.quit,
                           activeforeground=‘white‘,
                           activebackground=‘red‘)
        self.clr.pack(side=LEFT)
        self.ls.pack(side=LEFT)
        self.quit.pack(side=LEFT)
        self.bfm.pack()

        if initdir:
            self.cwd.set(os.curdir)
            self.doLS()

    def clrDir(self,ev=None):
        self.cwd.set(‘‘)

    def setDirAndGo(self,ev=None):
        self.last = self.cwd.get()
        self.dirs.config(selectbackground=‘red‘)
        check = self.dirs.get(self.dirs.curselection())
        if not check:
            check = os.curdir
        self.cwd.set(check)
        self.doLS()

    def doLS(self,ev=None):
        error = ‘‘
        tdir = self.cwd.get()
        if not tdir:
            tdir = os.curdir
        if not os.path.exists(tdir):
            error = tdir + ‘: no such file‘
        elif not os.path.isdir(tdir):
            error = tdir + ‘: not a directory‘

        if error:
            self.cwd.set(error)
            self.top.update()
            sleep(2)
            if not (hasattr(self,‘last‘) and self.last):
                self.last = os.curdir
                self.cwd.set(self.last)
                self.dirs.config(selectbackground=‘LightSkyBlue‘)
                self.top.update()
                return
        self.cwd.set(‘FETCHING DIRECTORY CONTENTS...‘)
        self.top.update()
        dirlist = os.listdir(tdir)
        dirlist.sort()
        os.chdir(tdir)
        self.dir1.config(text=unicode(os.getcwd(),‘gbk‘))
        self.dirs.delete(0,END)
        self.dirs.insert(END,os.curdir)
        self.dirs.insert(END,os.pardir)
        for eachFile in dirlist:
            try:
                eachFile=unicode(eachFile,‘gbk‘)
            except:
                pass
            self.dirs.insert(END,eachFile)
            self.cwd.set(os.curdir)
            self.dirs.config(selectbackground=‘LightSkyBlue‘)
def main():
    d=DirList(os.curdir)
    mainloop()

if __name__==‘__main__‘:
    main()
    

 

GUI 文件遍历系统 (listdir.py)可显示中文目录文件版

标签:

原文地址:http://www.cnblogs.com/welling-wei/p/4624278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!