简体   繁体   English

如何只允许顶部框架垂直拉伸

[英]How to only allow the top frame verticaly stretch

I try to adopt Tkinter, treeview doesn't resize with window , with verry little modification.我尝试采用Tkinter,treeview 不会用 window 调整大小,修改很少。

import tkinter as tk
from tkinter import ttk
import random 

class App():

    def __init__(self):

        self.root = tk.Tk()

        self.frame = tk.Frame(self.root)
        self.frame.pack(expand=True, fill=tk.BOTH)

        self.tree = ttk.Treeview(self.frame, show="headings")
        self.tree.pack(expand=True, )

        self.frameBT = tk.LabelFrame(self.root,text='Buttons')
        self.frameBT.pack(expand=True, fill=tk.X)

        self.button = ttk.Button(self.frameBT, text="Fill", command=self.fill)
        self.button.pack(side=tk.BOTTOM,expand=True)

        self.fill()

        self.root.mainloop()

    def fill(self):

        if self.has_data():
            self.tree.delete(*self.tree.get_children())

        i = random.randrange(1,10)
        self.tree["columns"]=tuple([str(i) for i in range(i)])

        for col in self.tree['columns']:
            self.tree.heading(col, text="Column {}".format(col), anchor=tk.CENTER)
            self.tree.column(col, anchor=tk.CENTER)

        j = random.randrange(10)

        for j in range(j):

            self.tree.insert("", "end", values = tuple([k for k in range(i)]))

    def has_data(self):

        has_tree = self.tree.get_children()

        return True if has_tree else False


App()

Currently, when I stretch the window verticaly, I got目前,当我垂直拉伸 window 时,我得到了

在此处输入图像描述

My question is, how to keep that 'Button' at the verry bottom, while the bottom of treeview frame move up and down when I resize the main window.我的问题是,当我调整主 window 的大小时,如何将“按钮”保持在最底部,而 treeview 框架的底部会上下移动。

You need to:你需要:

  • make self.tree to fill all available space by setting fill=tk.BOTH :通过设置fill=tk.BOTH使self.tree填充所有可用空间:
self.tree.pack(expand=True, fill=tk.BOTH)  # added fill=tk.BOTH
  • disable expand of self.frameBT by removing expand=True :通过删除expand=True禁用self.frameBT的扩展:
self.frameBT.pack(fill=tk.X)  # removed expand=True

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM