Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2014 18:30:18

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Frame или второй простой вопрос

Добрый вечер!

Итак, теперь у меня следующий вопрос: каким образом можно растянуть frame на все окно?
Т.е. чтобы рамка заполнила все пространство окна.

Офлайн

#2 Март 30, 2014 19:13:53

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Frame или второй простой вопрос

Это не нужно. Хотя реально можно.
Для этого нужно использовать дополнительный метод _propagate() каждого менеджера геометрии объектов (pack, grid, place). Не забудьте предварительно назначить размеры рамки, чтобы они были равны размерам базового окна.
Хотя зачем это делать, для меня навсегда останется тайной Прикол рамки как раз в том, чтобы обосабливать определенные группы виджетов поэтому она их и обтягивает как “презервуар”. Кроме того она служит базовым суперклассом для большинства графических моделей.

P.S. Будут вопросы - пишите.

Отредактировано 4kpt_II (Март 30, 2014 19:16:51)

Офлайн

#3 Апрель 3, 2014 18:22:49

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Frame или второй простой вопрос

А как юзать этот метод? Может, вы имели ввиду аргумент метода? А то как-то не клеется, метод у метода.

К вопросу, зачем мне это надо: на самом деле мне надо устроить окно так, чтобы оно делилось на 2 части с помощью grid. На самом деле мне надо, чтобы рамка заполнила каждую из 2 половин окна. А в каждой рамке находились бы определенные виджеты.

P.S. Если я решил сделать не самым удобным спосбом - так и напишите, и за одно напишите, пожалуйста, как можно сделать удобнее.

Офлайн

#4 Апрель 3, 2014 20:35:34

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Frame или второй простой вопрос

Не вопрос. Держите решение. Но рамочки нужны не для того, чтобы делить области пополам. Можно использовать 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()

P.S. Будут вопросы - пишите…

P.S.S. Если Вам нужна все-таки ювелирная точность и соблюдение пропорций можете глянуть в сторону другого метода геометрии объектов: place()

Отредактировано 4kpt_II (Апрель 3, 2014 20:38:52)

Офлайн

#5 Апрель 3, 2014 21:56:53

Art-master
От: Россия, Ростов-на-Дону
Зарегистрирован: 2013-06-08
Сообщения: 78
Репутация: +  1  -
Профиль   Отправить e-mail  

Frame или второй простой вопрос

Я понял! Спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version