【发布时间】:2018-01-02 08:10:40
【问题描述】:
我无法使用网格布局调整 tkinter 上的树视图小部件的大小。我尝试将columnconfigure 和rowconfigure 与weight 一起使用,但它不起作用。当我运行它时,当我拉伸它所在的窗口时,树视图不会填充空白空间。
def __init__(self, master):
self.master = master
tk.Frame.__init__(self, self.master)
self.create_widgets()
def create_widgets(self):
# button to request data
self.request_button = tk.Button(root, text="Send", command=self.req_client)
self.request_button.grid(row=0, column=0, rowspan=2, columnspan=3)
# timer label
self.timer_label = tk.Label(root, text="Timer Settings")
self.timer_label.grid(row=0, column=3, columnspan=2, pady=3, sticky=tk.NSEW)
# create tk variable
self.timervar = tk.StringVar(root)
# dropdown dictionary
self.timerDict = {"-", "5 minutes", "10 minutes", "15 minutes"}
self.timervar.set("-") # <-- set the default value
# timer dropdown menu
self.timer_option = tk.OptionMenu(root, self.timervar, *self.timerDict, command=self.req_timer)
self.timer_option.grid(row=1, column=3, columnspan=2, padx=3, pady=3, sticky=tk.NSEW)
# scroll bar for the terminal outputs
self.terminal_scrollbar = tk.Scrollbar(root)
self.terminal_scrollbar.grid(row=2, column=5, sticky=tk.NS)
# terminal output
self.terminal_tree = ttk.Treeview(root)
self.terminal_tree.grid(row=2, column=0, columnspan=5, sticky=tk.NSEW)
self.terminal_tree.configure(yscrollcommand=self.terminal_scrollbar.set)
self.terminal_tree.columnconfigure(0, weight=1)
self.terminal_tree.rowconfigure(0, weight=1)
self.terminal_tree["columns"] = ("1")
self.terminal_tree['show'] = 'headings'
self.terminal_tree.column("1", width=100, anchor='c')
self.terminal_tree.heading("1", text="Example")
【问题讨论】:
-
如果您使用
Frame创建类,那么您应该使用此框架(self)作为小部件的父级(而不是root) -
treeview在root的网格中,因此您应该使用root.columnconfigure()更改网格weight -
@furas 我认为你的最后一条评论就是答案。
-
@Nae 我太累了,无法创建示例来检查它。但在你发表评论后,我做了例子:)
标签: python python-3.x tkinter resize treeview