Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
endTk.mainloopЗдесь мы создали корневой контейнер, сформировали строку даты и создали метку. В качестве текста, изображаемого на метке, мы задали строку
strpackНа рис. 12.1 показано, как выглядит окно приложения.

Рис. 12.1. Простое приложение Tk
Как было сказано выше, создать метку можно было бы и так:
lab = TkLabel.new(root) do text str pack("padx" => 15, "pady" => 10, "side" => "top")endЭкранные единицы измерения (в примере выше мы их использовали для указания
padxpadyсmiрpadxpack("padx" => "80m")pack("padx" => "8с")pack("padx" => "3i")pack("padx" => "12p")Атрибут
sidesiderightleftbottomУ метода
packАтрибут
fillxуbothnonenoneАтрибут
anchorcenternsewnenwseswАтрибут
inАтрибуты
beforeafterВ общем, Tk обеспечивает достаточную гибкость при размещении виджетов в окне. Читайте документацию и экспериментируйте.
12.1.3. Кнопки
В любом графическом интерфейсе кнопка — один из наиболее употребительных виджетов. Как и следовало ожидать, в Ruby/Tk кнопка представляется классом
TkButtonВ нетривиальных приложениях обычно создаются фреймы, содержащие разные виджеты. Кнопка может располагаться внутри такого фрейма.
Обычно для кнопки задаются по меньшей мере три атрибута:
• текст кнопки;
• ассоциированная с кнопкой команда (исполняемая в результате нажатия);
• способ упаковки кнопки в объемлющем контейнере.
Вот простенький пример:
btn_OK = TkButton.new do text "OK" command (proc ( puts "Пользователь говорит OK." }) pack("side" => "left")endЗдесь мы создаем новую кнопку и присваиваем объект переменной
btn_OKinstance_evalTkButtonТекст, заданный в качестве значения атрибута
textКак работает метод
packpackИнтересная часть — метод
commandProclambdaprocKernelProcВыполняемое действие не очень осмысленно. Когда пользователь нажимает кнопку, вызывается неграфический метод
putsСледующий пример более содержателен. В листинге 12.1 приведено приложение, имитирующее термостат. В нем отображается то увеличивающаяся, то уменьшающаяся температура (создавая иллюзию, будто мы включаем обогрев или охлаждение). Код сопровождается комментариями.
require 'tk'# Типичные параметры упаковки...Тор = { 'side' => 'top', 'padx'=>5, 'pady'=>5 }
