簡體   English   中英

Python Tkinter treview:列大小不會擴展到窗口高度

[英]Python Tkinter treview: column size does not expand to window height

我無法使Tkinter上的treeview小部件填充整列。 我嘗試使用帶有權重的列配置,但是它不起作用。 當我運行它時,樹視圖將顯示它,如圖片鏈接中所給。 我如何獲取樹視圖以顯示目錄,這些目錄將窗口填滿到底部。

class dir_tree(object):
def __init__(self, master, path):
    self.nodes = dict()
    frame = tk.Frame(master)
    self.tree = ttk.Treeview(frame)

    ysb = ttk.Scrollbar(frame, orient='vertical', command=self.tree.yview)
    xsb = ttk.Scrollbar(frame,orient='horizontal',command=self.tree.xview)
    self.tree.configure( xscroll=master.winfo_screenheight())
    self.tree.heading('#0', text='Manga Directory', anchor='w')
    self.tree.grid(column = 0, sticky = 'ns')
    ysb.grid(row=0, column=1, sticky='ns')
    xsb.grid(row=1, column=0, sticky='ew')
    frame.grid(column = 0, sticky = 'ns')

    self.tree.columnconfigure(0, weight=1)
    abspath = os.path.abspath('/home/user/Desktop/')
    self.insert_node('', abspath, abspath)
    self.tree.bind('<<TreeviewOpen>>', self.open_node)

def insert_node(self, parent, text, abspath):
    node = self.tree.insert(parent, 'end', text=text, open=False)
    if os.path.isdir(abspath):
        self.nodes[node] = abspath
        self.tree.insert(node, 'end')

def open_node(self, event):
    node = self.tree.focus()
    abspath = self.nodes.pop(node, None)
    if abspath:
        self.tree.delete(self.tree.get_children(node))
        for p in os.listdir(abspath):
            self.insert_node(node, p, os.path.join(abspath, p))

if __name__ == "__main__":
    dirr = dir_tree(root, path='/home/user/Desktop/')

圖片

在此處輸入圖片說明
如何使垂直滾動條填充整個窗口的左側高度,而不是僅顯示一部分窗口?

因此,我設法使滾動條適合整個窗口。 這是我的解決方案:

class dir_tree(object):
def __init__(self, master, path):
    self.nodes = dict()
    notebook = ttk.Notebook(master, width = 2000)
    self.tree = ttk.Treeview(notebook)
    ysb = ttk.Scrollbar(notebook, orient='vertical', command=self.tree.yview)
    xsb = ttk.Scrollbar(notebook, orient='horizontal',command=self.tree.xview)

    self.tree.configure(yscrollcommand=ysb.set, xscrollcommand=xsb.set)
    self.tree.heading('#0', text='Manga Directory', anchor='w')
    xsb.pack(side=tk.BOTTOM, fill=tk.X)
    ysb.pack(side=tk.RIGHT, fill=tk.Y)
    notebook.pack(side = LEFT,fill = tk.Y)
    self.tree.pack(side = LEFT, fill = tk.BOTH, expand = True)
    abspath = os.path.abspath('/home/user/Desktop/')
    self.insert_node('', abspath, abspath)
    self.tree.bind('<<TreeviewOpen>>', self.open_node)

def insert_node(self, parent, text, abspath):
    node = self.tree.insert(parent, 'end', text=text, open=False)
    if os.path.isdir(abspath):
        self.nodes[node] = abspath
        self.tree.insert(node, 'end')

def open_node(self, event):
    node = self.tree.focus()
    abspath = self.nodes.pop(node, None)
    if abspath:
        self.tree.delete(self.tree.get_children(node))
        for p in os.listdir(abspath):
            self.insert_node(node, p, os.path.join(abspath, p))

if __name__ == "__main__":
dirr = dir_tree(root, path='/home/user/Desktop/') # Path to Downloads 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM