Форум сайта python.su
0
Добрый день!
Может кто-то сталкивался с такой проблемой в tkinter, у меня опыта не хватает:
Есть основное окно с верхним меню, при нажатии пункта меню окно заполняется разными виджетами, среди которых есть treeview в виде таблички (занимает 1/3 нижней части окна). Задача простая - нужно, чтобы этот treeview красиво растягивалось вместе с окном.
Пытался применить relwidth, relheight - в ширину растягивается красиво, т.к. совпадает с шириной окна, а в высоту не получается, т.к. в relheight задается размеры относительно всего окна, например, 0.4 и, естественно, окно растягивается больше чем таблица.
Решил пойти другим путем - привязал к событию изменения размеров окна функцию
root.bind('<Configure>', onFormEvent)
def onFormEvent(event):
w, h=root.winfo_width(), root.winfo_height()
table_1.place(width=1190+w-1200, heigth=280+h-700) #(1190, 280 -размеры таблицы, 1200, 700 - размеры основного окна)
Тут возникла другая проблема - при запуске программы табличка, по понятной причине, появляется сразу, затем после нажатия пункта меню все отражается, как мне нужно и растягивается как нужно, все ОК. Как сделать, чтобы при запуске программы табличка сразу не появлялась? Можно ли как-то вместо table_1.place(width=1190+w-1200, heigth=280+h-700) использовать просто изменение размеров таблицы без place()? Ну типа table_1.heigth=280+h-700
Спасибо всем.
Офлайн
72
Если я правильно понял, то так:
from tkinter import ttk, Tk, Frame root=Tk() fr=Frame(root, width=200, height=100, bg='red') fr.pack(fill='both',expand=0) t=ttk.Treeview(root) t.pack(fill='both',expand=1) root.mainloop()
Офлайн
0
ramiСпасибо большое!
Если я правильно понял, то так:
Офлайн