【问题标题】:File manager for PythonPython的文件管理器
【发布时间】:2013-09-29 11:28:20
【问题描述】:

我尝试实现一个文件管理器,问题出现在使用 Treeview 显示指定目录时,这会在 TotalCommander'e 中发生

这是一段代码:


from tkinter import *
from tkinter import ttk

class FileBrowser(Frame):

    def __init__(self, root):
        Frame.__init__(self, root)
        self.master.title('Файловый менеджер')
        self.master.geometry('1024x768')

        listframe = Frame(root, bd=5)
        listframe.pack(side='top', fill=BOTH, expand=1)

        self.filedirlist = ttk.Treeview(listframe)
        self.filedirlist["columns"]=("#1", "#2", "#3", "#4")
        self.filedirlist.column("#0", width=175, minwidth=100)
        self.filedirlist.column("#1", width=100, minwidth=100)
        self.filedirlist.column("#2", width=100, minwidth=100)
        self.filedirlist.column("#3", width=100, minwidth=100)
        self.filedirlist.column("#4", width=100, minwidth=100)
        self.filedirlist.heading("#0", text="Имя")
        self.filedirlist.heading("#1", text="Режим")
        self.filedirlist.heading("#2", text="Частота, МГц")
        self.filedirlist.heading("#3", text="Размер, Мб")
        self.filedirlist.heading("#4", text="Комментарий")
        self.filedirlist.pack(side='top', fill=BOTH, expand=1)
        listsb = Scrollbar(self.filedirlist,
                orient=HORIZONTAL, command=self.filedirlist.xview)
        listsb.pack(side=BOTTOM, fill=X)

        self.listbuttonopen = Button(listframe,
                text='Open').pack(side='left', padx='10', pady='5')
        self.listbuttondelete = Button(listframe,
                text='Delete').pack(side='left', padx='10', pady='5')
        self.listbuttonload = Button(listframe,
                text='Load').pack(side='left', padx='10', pady='5')

    if __name__=='__main__':
        root = Tk()
        FileBrowser(root).pack()
        root.mainloop()

当显示文件夹时,只有“Имя”和“Комментарий”列处于活动状态,其余列仅在选定文件夹的内容时处于活动状态。

实际上的问题是:是否可以使用 Treeview'ra 来实现它以及如何实现?)

附:对不起我的英语)

【问题讨论】:

    标签: python treeview tkinter file-browser


    【解决方案1】:

    您可以使用tkinter.ttk.Treeview.insertvalues 关键字来更改表格的特定列。您已经在使用text 选项,但之后使用values=("value1", "value2", "value3") 来指定其他列显示的内容。例如:

    Take your Treeview `filedirlist`:
    ----------------------------------------------
    |   Name   |   Type   |   Size   |   Notes   |
    ----------------------------------------------
    |                                            |
    |                                            |
    |                                            |
    ----------------------------------------------
    
    filedirlist.insert("", tkinter.END, "element-id1", text="example1")
    ----------------------------------------------
    |   Name   |   Type   |   Size   |   Notes   |
    ----------------------------------------------
    | example1                                   |
    |                                            |
    |                                            |
    ----------------------------------------------
    
    filedirlist.insert("", tkinter.END, "element-id2", text="example2", values=("type2", "size2", "notes2"))
    ----------------------------------------------
    |   Name   |   Type   |   Size   |   Notes   |
    ----------------------------------------------
    | example1                                   |
    | example2   type2      size2      notes2    |
    |                                            |
    ----------------------------------------------
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2019-04-22
      • 2019-06-08
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多