2016-04-28 1 views
0

В Python3/tkinter есть простой способ установить размер ttk.frame как относительно его родительского размера окна и убедиться, что он будет правильно настраиваться (со всеми его виджетами) при изменении размера окна?В Python3/tkinter как установить размер кадра относительно его размера родительского окна?

В некотором смысле, я стараюсь, чтобы pack() a ttk.frame несколько пикселей меньше, чем ширина окна root.

+1

Там нет однозначного ответа на этот вопрос. Создание кадра по размеру относительно родителя может быть осуществлено многими способами. Это зависит от того, что находится в кадре, что находится в родительском фрейме, как эти кадры используют пакет, сетку или место, как вы хотите, чтобы дополнительное пространство было обработано и т. Д. Этот вопрос слишком широк, как написано. –

+0

он действительно использует использование пакета, но – Mixone

ответ

1

Если вы знаете размер вы хотите, и есть это вы делаете:

root = # Your root window 
myFrame = ttk.Frame(root, height=desiredHeight, width=desiredWidth) 
myFrame.pack() 

Так что, если вы хотите его по отношению к корню:

root = # Your root window 
rootHeight = root.winfo_height() 
rootWidth = root.winfo_width() 
# Say you want it to be 20 pixels smaller 
myFrame = ttk.Frame(root, height=rootHeight-20, width=rootWidth-20) 
myFrame.pack() 
# OR 
myFrame = ttk.Frame(root) # No set dimensions 
myFrame.pack(padx=20, pady=20) 
# This will make it have a padding of 20 pixels on height and width, 
# with respect to parent rather than itself 
+0

Кажется, что это просто. Было бы также возможно сделать это относительно родителя (как в ваших последних двух строках кода), если мы использовали 'place()' вместо 'pack()'? –

+0

Я немного пробовал, и с помощью 'place()' мы можем получить аналогичный эффект, используя что-то вроде этого (в этом случае я играю новый кадр с позицией относительно другого объекта): 'FRAME.place (in_ = OTHER_OBJECT , relx = .95, y = 0, anchor = "se", relwidth = .9) '. Таким образом, мы получаем раму, которая имеет 90% ширины окна и расположена с горизонтальным пространством 5% с обеих сторон, справа и слева. –

+0

это тоже хорошая идея, но будьте осторожны, менеджер геометрии 'place' является более упрощенным, тогда как для этого, в частности, это хорошая идея, обычно лучше всего ее избежать – Mixone