簡體   English   中英

tkinter:樹視圖大於網格單元格

[英]tkinter: treeview bigger than grid cell

我將treeview小部件放置在使用stick=N+S+E+W的網格單元中,以便將小部件邊框附加到網格單元的邊框。 另外,我為父級(根)設置了grid_columnconfigure(0, weight=1) ,以便根據主窗口的大小(可調整大小)來調整第0列中的小部件(也包含樹狀視圖)的大小。 盡管如此,treeview小部件的某些列(“ bitrate”,“ status”)仍未顯示,因為整個小部件大於包含它的網格單元。 來源:

from tkinter import *
from tkinter.ttk import *

class MainWindow(Frame):

    def __init__(self, parent):

        Frame.__init__(self, parent)   
        self.parent = parent        
        self.buildUI()

    def buildUI(self):

        # window title

        self.parent.title("test")

        # window config

        self.parent.minsize(width=600, height=320)
        self.parent.grid_columnconfigure(0, weight=1)
        self.parent.rowconfigure(1, weight=1)
        self.parent.geometry("600x320")

        # menu bar (Settings, About, Exit)

        self.menubar = Menu(self.parent)
        self.filemenu = Menu(self.menubar, tearoff=0)
        self.menubar.add_cascade(label="File", menu=self.filemenu)

        self.filemenu.add_command(label="Settings")
        self.filemenu.add_command(label="About")
        self.filemenu.add_separator()
        self.filemenu.add_command(label="Exit", command=self.parent.quit)

        self.parent.config(menu=self.menubar)

        # entry search

        self.entrySearch = Entry(self.parent)
        self.entrySearch.grid(row=0, column=0, sticky=W+E)

        # button search

        self.buttonSearch = Button(text="Search")
        self.buttonSearch.grid(row=0, column=1)

        # results table

        self.resultsTable = Treeview(self.parent)
        self.resultsTable["columns"] = ("title", "artist", "length", "bitrate", "status")
        self.resultsTable["show"] = "headings" # remove first empty column (id)
        self.resultsTable.heading("title", text="Title")
        self.resultsTable.heading("artist", text="Artist")
        self.resultsTable.heading("length", text="Length")
        self.resultsTable.heading("bitrate", text="Bitrate")
        self.resultsTable.heading("status", text="Status")
        self.resultsTable.grid(row=1, column=0, columnspan=2, sticky=N+S+E+W)

        # bottom status bar

        self.statusBar = Label(self.parent, text="Ready")
        self.statusBar.grid(row=2, column=0, sticky=W)

def main():

    root = Tk()
    app = MainWindow(root)
    root.mainloop()  

if __name__ == '__main__':
    main()

這是屏幕截圖: http : //i.stack.imgur.com/U1g44.png 如您所見,未顯示“比特率”和“狀態”列。 只能通過增加主窗口的寬度來查看它們。 我不知道問題出在哪里。 感謝您抽出寶貴的時間。

treeview小部件具有一個名為column的方法,該方法可讓您指定給定列的選項。 選項之一是stretch ,它使您可以確定在調整窗口小部件大小時是否應拉伸和收縮列。 您還可以使用width屬性指定起始大小。 這兩個因素的結合將使您的樹形視圖與所有適合屏幕的列一起出現。

self.resultsTable = Treeview(self.parent)
...
self.resultsTable.column("title", stretch=True, width=10)
self.resultsTable.column("artist", stretch=True, width=10)
self.resultsTable.column("length", stretch=True, width=10)
self.resultsTable.column("bitrate", stretch=True, width=10)
self.resultsTable.column("status", stretch=True, width=10)

暫無
暫無

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

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