Форум сайта python.su
Добрый вечер!
Итак, теперь у меня следующий вопрос: каким образом можно растянуть frame на все окно?
Т.е. чтобы рамка заполнила все пространство окна.
Офлайн
Это не нужно. Хотя реально можно.
Для этого нужно использовать дополнительный метод _propagate() каждого менеджера геометрии объектов (pack, grid, place). Не забудьте предварительно назначить размеры рамки, чтобы они были равны размерам базового окна.
Хотя зачем это делать, для меня навсегда останется тайной Прикол рамки как раз в том, чтобы обосабливать определенные группы виджетов поэтому она их и обтягивает как “презервуар”. Кроме того она служит базовым суперклассом для большинства графических моделей.
P.S. Будут вопросы - пишите.
Отредактировано 4kpt_II (Март 30, 2014 19:16:51)
Офлайн
А как юзать этот метод? Может, вы имели ввиду аргумент метода? А то как-то не клеется, метод у метода.
К вопросу, зачем мне это надо: на самом деле мне надо устроить окно так, чтобы оно делилось на 2 части с помощью grid. На самом деле мне надо, чтобы рамка заполнила каждую из 2 половин окна. А в каждой рамке находились бы определенные виджеты.
P.S. Если я решил сделать не самым удобным спосбом - так и напишите, и за одно напишите, пожалуйста, как можно сделать удобнее.
Офлайн
Не вопрос. Держите решение. Но рамочки нужны не для того, чтобы делить области пополам. Можно использовать PanedWindow или вообще другие решения. У рамочек есть несколько важных задач. И среди них, как назло, нет задачи разделения экрана на части
import Tkinter # root = Tkinter.Tk() root.geometry("400x400+100+100") # frame_l = Tkinter.Frame(root, width=200, height=400, bg="red") frame_l.grid(row=0, column=0) frame_l.grid_propagate(0) button_l = Tkinter.Button(frame_l, text="push_me") button_l.grid(row=0, column=0) # frame_r = Tkinter.Frame(root, width=200, height=400, bg="grey") frame_r.grid(row=0, column=1) frame_r.grid_propagate(0) button_r = Tkinter.Button(frame_r, text="push_me") button_r.grid(row=0, column=0) # root.mainloop()
Отредактировано 4kpt_II (Апрель 3, 2014 20:38:52)
Офлайн
Я понял! Спасибо!
Офлайн