⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filelisting.py

📁 pygtk的教程
💻 PY
字号:
#!/usr/bin/env pythonimport os, stat, timeimport pygtkpygtk.require('2.0')import gtkfolderxpm = [    "17 16 7 1",    "  c #000000",    ". c #808000",    "X c yellow",    "o c #808080",    "O c #c0c0c0",    "+ c white",    "@ c None",    "@@@@@@@@@@@@@@@@@",    "@@@@@@@@@@@@@@@@@",    "@@+XXXX.@@@@@@@@@",    "@+OOOOOO.@@@@@@@@",    "@+OXOXOXOXOXOXO. ",    "@+XOXOXOXOXOXOX. ",    "@+OXOXOXOXOXOXO. ",    "@+XOXOXOXOXOXOX. ",    "@+OXOXOXOXOXOXO. ",    "@+XOXOXOXOXOXOX. ",    "@+OXOXOXOXOXOXO. ",    "@+XOXOXOXOXOXOX. ",    "@+OOOOOOOOOOOOO. ",    "@                ",    "@@@@@@@@@@@@@@@@@",    "@@@@@@@@@@@@@@@@@"    ]folderpb = gtk.gdk.pixbuf_new_from_xpm_data(folderxpm)filexpm = [    "12 12 3 1",    "  c #000000",    ". c #ffff04",    "X c #b2c0dc",    "X        XXX",    "X ...... XXX",    "X ......   X",    "X .    ... X",    "X ........ X",    "X .   .... X",    "X ........ X",    "X .     .. X",    "X ........ X",    "X .     .. X",    "X ........ X",    "X          X"    ]filepb = gtk.gdk.pixbuf_new_from_xpm_data(filexpm)class FileListingCellDataExample:    column_names = ['Name', 'Size', 'Mode', 'Last Changed']    def delete_event(self, widget, event, data=None):        gtk.main_quit()        return False     def __init__(self, dname = None):        cell_data_funcs = (None, self.file_size, self.file_mode,                           self.file_last_changed)         # Create a new window        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)         self.window.set_size_request(400, 300)         self.window.connect("delete_event", self.delete_event)         listmodel = self.make_list(dname)         # create the TreeView        self.treeview = gtk.TreeView()         # create the TreeViewColumns to display the data        self.tvcolumn = [None] * len(self.column_names)        cellpb = gtk.CellRendererPixbuf()        self.tvcolumn[0] = gtk.TreeViewColumn(self.column_names[0], cellpb)        self.tvcolumn[0].set_cell_data_func(cellpb, self.file_pixbuf)        cell = gtk.CellRendererText()        self.tvcolumn[0].pack_start(cell, False)        self.tvcolumn[0].set_cell_data_func(cell, self.file_name)        self.treeview.append_column(self.tvcolumn[0])        for n in range(1, len(self.column_names)):            cell = gtk.CellRendererText()            self.tvcolumn[n] = gtk.TreeViewColumn(self.column_names[n], cell)            if n == 1:                cell.set_property('xalign', 1.0)            self.tvcolumn[n].set_cell_data_func(cell, cell_data_funcs[n])            self.treeview.append_column(self.tvcolumn[n])        self.treeview.connect('row-activated', self.open_file)        self.scrolledwindow = gtk.ScrolledWindow()        self.scrolledwindow.add(self.treeview)        self.window.add(self.scrolledwindow)        self.treeview.set_model(listmodel)         self.window.show_all()        return    def make_list(self, dname=None):        if not dname:            self.dirname = os.path.expanduser('~')        else:            self.dirname = os.path.abspath(dname)        self.window.set_title(self.dirname)        files = [f for f in os.listdir(self.dirname) if f[0] <> '.']        files.sort()        files = ['..'] + files        listmodel = gtk.ListStore(object)        for f in files:            listmodel.append([f])        return listmodel    def open_file(self, treeview, path, column):        model = treeview.get_model()        iter = model.get_iter(path)        filename = os.path.join(self.dirname, model.get_value(iter, 0))        filestat = os.stat(filename)        if stat.S_ISDIR(filestat.st_mode):            new_model = self.make_list(filename)            treeview.set_model(new_model)        return    def file_pixbuf(self, column, cell, model, iter):        filename = os.path.join(self.dirname, model.get_value(iter, 0))        filestat = os.stat(filename)        if stat.S_ISDIR(filestat.st_mode):            pb = folderpb        else:            pb = filepb        cell.set_property('pixbuf', pb)        return    def file_name(self, column, cell, model, iter):        cell.set_property('text', model.get_value(iter, 0))        return    def file_size(self, column, cell, model, iter):        filename = os.path.join(self.dirname, model.get_value(iter, 0))        filestat = os.stat(filename)        cell.set_property('text', filestat.st_size)        return    def file_mode(self, column, cell, model, iter):        filename = os.path.join(self.dirname, model.get_value(iter, 0))        filestat = os.stat(filename)        cell.set_property('text', oct(stat.S_IMODE(filestat.st_mode)))        return    def file_last_changed(self, column, cell, model, iter):        filename = os.path.join(self.dirname, model.get_value(iter, 0))        filestat = os.stat(filename)        cell.set_property('text', time.ctime(filestat.st_mtime))        returndef main():    gtk.main()if __name__ == "__main__":    flcdexample = FileListingCellDataExample()    main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -