【问题标题】:Resizing the treeview manually in tkinter在 tkinter 中手动调整树视图的大小
【发布时间】:2020-09-25 10:33:25
【问题描述】:

在这里,我尝试手动将 sample1 树视图向下和向上拖动(最大化和最小化可见行的数量)。当我手动向下拖动第一个树视图时,第一个树视图需要扩展,第二个树视图需要最小化。我们可以在 Tkinter 中做到这一点吗?请帮我解决这个问题

示例代码:

import tkinter as tk
import tkinter.ttk as ttk


class Window:
    def __init__(self, master):
        self.master = master
        self.master.geometry('630x500+90+30')
        
        self.button = tk.Button(self.master,height=1,width=11, text="Sample").place(x=0,y=0)
        self.label = tk.Label(self.master, text='sample1 ',font=("Algerian", 20,'bold')).grid(row=0,columnspan=3)
        
        cols = ('aa','bb')
        self.treeview = ttk.Treeview(self.master, columns=cols)
        v_scrollbar = ttk.Scrollbar(self.master, orient='vertical', command=self.treeview.yview)
        self.treeview.config( yscrollcommand=v_scrollbar.set)
        for col in cols:
            self.treeview.heading(col, text=col)
        self.treeview.grid(row=1, column=0)
        v_scrollbar.grid(row=1, column=1, sticky='nes')

        self.label = tk.Label(self.master, text="sample2").grid(row=6, columnspan=3)
        
        ccols = ('aa', 'bb')
        self.treeview1 = ttk.Treeview(self.master, columns=ccols)
        v_scrollbar1= ttk.Scrollbar(self.master, orient='vertical', command=self.treeview1.yview)
        self.treeview1.config( yscrollcommand=v_scrollbar1.set)
        for col in ccols:
            self.treeview.heading(col, text=col)
        self.treeview1.grid(row=8, column=0)
        v_scrollbar1.grid(row=8, column=1, sticky='nes')
        
        for i in range(100):
            self.treeview.insert('', 'end', value=(i))

def main():
    root = tk.Tk()
    Window(root)
    root.mainloop()

# --- main ---

if __name__ == '__main__':
    main()

如果需要任何其他信息,请告诉我。谢谢

【问题讨论】:

标签: python tkinter


【解决方案1】:

为此的小部件称为窗格窗口。 tkinter 和 ttk 都有这样的小部件。

PanedWindow 的工作原理很像 ttk Notebook 小部件。每个窗格都应该是一个框架,您调用add 将框架添加到PanedWindow

这是一个简单的示例,其中包含两个 Treeview 小部件,每个小部件都有一个 Scrollbar

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

pw = ttk.PanedWindow(root, orient="vertical")
pw.pack(fill="both", expand=True)

pane1 = ttk.Frame(pw)
pane2 = ttk.Frame(pw)

pw.add(pane1)
pw.add(pane2)

tree1 = ttk.Treeview(pane1)
sb1 = ttk.Scrollbar(pane1, command=tree1.yview)
tree1.configure(yscrollcommand=sb1.set)

sb1.pack(side="right", fill="y")
tree1.pack(side="right", fill="both", expand=True)

tree2 = ttk.Treeview(pane2)
sb2 = ttk.Scrollbar(pane2, command=tree2.yview)
tree2.configure(yscrollcommand=sb2.set)

sb2.pack(side="right", fill="y")
tree2.pack(side="right", fill="both", expand=True)

root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多