Treeview не растягивается на все окно
Есть небольшая программа и там нужна таблица, но она не растягивается на все окно в чем может быть проблема?
class Main (tk.Frame):
def __init__(self, root):
super().__init__(root)
self.init_main()
def init_main(self):
toolbar = tk.Frame(bg='#d7d8e0', bd=2)
toolbar.pack(side=tk.TOP, fill = tk.X)
btn_open_About = tk.Button(toolbar, text='О программе', command=self.open_About, bg='#d7d8e0', bd=0,
compound=tk.TOP)
btn_open_About.pack(side=tk.LEFT)
self.Frm1 = tk.Frame()
self.Frm1.pack(expand=tk.YES, fill=tk.BOTH)
self.tree = ttk.Treeview(self.Frm1, columns=('ID', 'name', 'phone'), height=15, show='headings')
self.tree.column('ID', width=50, anchor=tk.CENTER)
self.tree.column('name', width=50, anchor=tk.CENTER)
self.tree.column('phone', width=50, anchor=tk.CENTER)
self.tree.heading('ID', text='ID')
self.tree.heading('name', text='Имя контакта')
self.tree.heading('phone', text='Номер телефона')
ysb = ttk.Scrollbar(self, orient=tk.VERTICAL, command=self.tree.yview)
self.tree.configure(yscroll=ysb.set)
self.tree.grid(row=0, column=0)
ysb.grid(row=0, column=1, sticky=tk.N + tk.S)
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
def open_About(self):
About()
Ответы (1 шт):
Чтобы ячейка с деревом расширялась, rowconfigure и columnconfigure нужно вызывать для фрейма, в котором дерево находится, у вас это self.Frm1, плюс при размещении через grid нужно указать, чтобы дерево "прилипало" ко всем четырем сторонам ячейки (sticky='nsew' или sticky=tk.NSEW).
Также я думаю что вы хотели разместить полосу прокрутки справа от дерева, для этого нужно ее родителем указать self.Frm1, а не self.
Почему полоса прокрутки оказывается ниже - потому что у нее родитель Main, а у фрейма с деревом родитель главное окно (т.к. родитель у self.Frm1 явно не прописан), получается, что в окне root размещается фрейм self.Frm1, а ниже него фрейм Main. По логике стоило бы прописать для Frm1 родителем текущий объект (Main): self.Frm1 = tk.Frame(self).
Измененный фрагмент кода:
ysb = ttk.Scrollbar(self.Frm1, orient=tk.VERTICAL, command=self.tree.yview) # <-- self.Frm1 вместо self
self.tree.configure(yscroll=ysb.set)
self.tree.grid(row=0, column=0, sticky=tk.NSEW) # <-- sticky=tk.NSEW
ysb.grid(row=0, column=1, sticky=tk.N + tk.S)
self.Frm1.rowconfigure(0, weight=1) # <-- self.Frm1 вместо self
self.Frm1.columnconfigure(0, weight=1) # <-- self.Frm1 вместо self
Результат:

