Книга: Программирование на языке Ruby
12.1.2. Простое оконное приложение
12.1.2. Простое оконное приложение
Продемонстрируем очень простое приложение — окно, в котором выводится текущая дата. Начнем с явного создания корневого контейнера root и поместим в него виджет Label
.
require "tk"
root = TkRoot.new() { title "Today's Date" }
str = Time.now.strftime("Today is n%B %d, %Y")
lab = TkLabel.new(root) do
text str
pack("padx" => 15, "pady" => 10, "side" => "top")
end
Tk.mainloop
Здесь мы создали корневой контейнер, сформировали строку даты и создали метку. В качестве текста, изображаемого на метке, мы задали строку str
, а чтобы все выглядело аккуратно, вызвали метод pack
, которому сказали, что отступ по горизонтали должен составлять 15 пикселей, а по вертикали — 10 пикселей. Текст мы попросили отцентрировать в границах метки.
На рис. 12.1 показано, как выглядит окно приложения.
Рис. 12.1. Простое приложение Tk
Как было сказано выше, создать метку можно было бы и так:
lab = TkLabel.new(root) do
text str
pack("padx" => 15, "pady" => 10,
"side" => "top")
end
Экранные единицы измерения (в примере выше мы их использовали для указания padx
и pady
) — по умолчанию пиксели. Можно применять и другие единицы, если добавить к числу суффикс. Тогда значение становится строковым, но поскольку Ruby/Tk на это наплевать, то и мы не станем беспокоиться. Допустимы следующие единицы измерения: сантиметры (с
), миллиметры (m
), дюймы (i
) и пункты (р
). Все показанные ниже способы указания padx
правильны:
pack("padx" => "80m")
pack("padx" => "8с")
pack("padx" => "3i")
pack("padx" => "12p")
Атрибут side
в данном случае не дает ничего, поскольку мы установили его значение по умолчанию. Если вы измените размер окна, то текст останется «приклеенным» к верхней части той области, которой принадлежит. Другие возможные значения side
: right
, left
и bottom
.
У метода pack
есть и другие атрибуты, управляющие размещением виджетов на экране. Мы рассмотрим не все.
Атрибут fill
указывает, должен ли виджет заполнять весь выделенный для него прямоугольник (по горизонтали и/или по вертикали). Допустимые значения: x
, у
, both
и none
(по умолчанию none
).
Атрибут anchor
«скрепляет» виджет с теми или иными сторонами его прямоугольника; при этом применяется нотация «сторон света». По умолчанию подразумевается значение center
, другие допустимые значения: n, s, e
, w
, ne
, nw
, se
, sw
.
Атрибут in
упаковывает виджет относительно контейнера, отличного от его родительского. По умолчанию, конечно, принимается родительский контейнер.
Атрибуты before
и after
позволяют произвольно задавать порядок упаковки виджетов. Это полезно, поскольку виджеты могут создаваться не в том порядке, в котором расположены на экране.
В общем, Tk обеспечивает достаточную гибкость при размещении виджетов в окне. Читайте документацию и экспериментируйте.
- 12.4.2. Простое оконное приложение
- 12.3.2. Простое оконное приложение
- 12.2.2. Простое оконное приложение
- Простое присваивание
- Приложение 9 Акт выполненных работ (к Договору на оказание информационных услуг)
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- Приложение 19 Образец должностной инструкции мерчендайзера
- Приложение I Диаграммы взаимовлияния
- Приложение 10. Коды ошибок