Это моя первая встреча с Tkinter, и я бил головой о стену над этим.Рамка Tkinter не заполняет оставшееся пространство
В конечном счете, мне нужен макет, который использует рамку вдоль левого края, содержащую стек кнопок (навигация). Это должно быть жестко закреплено до 100 пикселей в ширину и занимать все вертикальное пространство. Остальная часть окна должна быть заполнена содержимым Frame, содержимое которого я буду менять динамически.
Итак, должно быть просто. Вот упрощенная версия того, что у меня есть (цветные для справки):
from Tkinter import *
root = Tk()
root.geometry("300x200")
navbar = Frame(root, bg="green", width=100)
navbar.pack(anchor=W, fill=Y, expand=True, side=LEFT)
content_frame = Frame(root, bg="orange")
content_frame.pack(anchor=N, fill=BOTH, expand=True, side=LEFT)
root.mainloop()
Что я ожидал увидеть зеленый бар (100 точек в ширину) на левой стороне окна (полная высота), а остальная часть окна оранжевая. Однако я получаю ирландский флаг (зеленый, белый, оранжевый).
Независимо от того, что я делаю, оранжевый content_frame просто отказывается заполнить горизонтально. Кажется, что Tk разделил окно ровно пополам, разместив зеленую навигационную панель на левой стороне (как и ожидалось), но при этом оранжевый content_frame будет только половиной оставшегося пространства.
Я могу заставить оранжевый заполнить пробел, закодировав его, в этом случае шириной = 200, но это не сгибается при изменении размера окна. Кроме того, если я не добавляю зеленый навигатор, оранжевый content_frame с удовольствием заполняет все окно.
Этот пример кода показывает content_frame с anchor = N, но не имеет значения, где я его привязываю. Также не имеет значения, будет ли я стороной = ЛЕВАЯ или боковая = ПРАВО.
Я также обнаружил, что независимо от того, как я меняю ширину зеленого навигатора, Tk всегда разделяет оставшееся горизонтальное пространство пополам и помещает оранжевый content_frame в правую половину.
Это должно быть просто. Есть идеи?
Я запустить свой код, и это, кажется, работает. [Screenshoit] (http://i.imgur.com/aCZMhmC.png). Можете ли вы опубликовать свой скриншот, чтобы мы знали, что вы не работаете. – Marcin
Я случайно остался в жестко запрограммированной ширине = 200 для content_frame. Это заставляет его работать корректно, пока вы не измените размер окна и не увидите, что он не сгибается, но остается жестко закодированным до 200 пикселей в ширину. Я редактировал код, чтобы лучше проиллюстрировать проблему. Вот что я вижу: [link] (http://i.imgur.com/NREA0Nr.png) – Foswick