Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2018 07:32:51

ok
Зарегистрирован: 2018-03-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

place()

Добрый день!
Может кто-то сталкивался с такой проблемой в 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
Спасибо всем.

Офлайн

#2 Дек. 7, 2018 09:01:26

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

place()

Если я правильно понял, то так:

 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()

Офлайн

#3 Дек. 10, 2018 15:49:35

ok
Зарегистрирован: 2018-03-22
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

place()

rami
Если я правильно понял, то так:
Спасибо большое!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version