Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
fr3.pack FramePackfr4.pack FramePackfr1a.pack Frame1Packfr1b.pack Frame1Packvar_host.value = "addison-wesley.com"var_user.value = "debra"var_port.value =23ent_pass.focusfoo = ent_user.fontTk.mainloopПрежде всего разберемся с размещением виджетов. Сначала мы создали несколько фреймов, расположенных друг под другом. В самом верхнем фрейме есть два фрейма поменьше, расположенных по горизонтали.
В листинге 12.2 встречается также метод
packingpadxpadysideanchorОбъекты
TkVariableTkVariablevalueПри создании объекта
TkEntryent_hosttextvariableTkVariablewidthШрифты задаются для полей ввода так же, как для меток. Аналогично обстоит дело и с цветами, которые в этом примере не задаются. Если шрифт пропорциональный, то два поля одинаковой ширины на экране могут оказаться различными.
Как обычно, необходимо вызвать метод
packДля поля, содержащего пароль, вызывается метод
showshowЯ уже сказал, что кнопки тут нужны только для красоты. Кнопка Sign on вообще ничего не делает, a Cancel завершает программу.
У полей ввода есть и другие атрибуты. Можно изменять значение из программы, не заставляя пользователя вводить его; можно задать шрифт и цвета; можно изменить характеристики курсора, указывающего место вставки, и перемещать его в нужное место. И многое, многое другое. Полное описание вы найдете в руководстве.
Раз уж мы заговорили о вводе текста, будет уместно упомянуть виджет
TextText12.1.5. Прочие виджеты
Tk содержит еще много виджетов. Упомянем некоторые из них.
Флажок обычно используется для представления полей, которые могут принимать одно из двух значений: да/нет или вкл/выкл. В Tk он называется «check button», а соответствующий ему класс —
TkCheckButtonПример в листинге 12.3 — это лишь скелет, в нем даже ни одной кнопки нет. Выводятся три флажка, соответствующие курсам, на которые можно записаться (информатика, музыка и литература). На консоль подается сообщение при каждом изменении состояния флажка.
require 'tk'root = TkRoot.new { title "Checkbutton demo" }top = TkFrame.new(root)PackOpts = { "side" => "top", "anchor" => "w" }cb1var = TkVariable.newcb2var = TkVariable.newcb3var = TkVariable.newcb1 = TkCheckButton.new(top) do variable cblvar text "Информатика" command { puts "Button 1 = #{cb1var.value}" } pack PackOpts endcb2 = TkCheckButton.new(top) do variable cb2var text "Музыка" command { puts "Button 2 = #{cb2var.value}" } pack PackOptsendcb3 = TkCheckButton.new(top) do variable cb3var text "Литература" command { puts "Button 3 = #{cb3var.value}" } pack PackOptsendtop.pack PackOptsTk.mainloopОтметим, что переменная, ассоциированная с флажком, принимает значение 1, когда флажок отмечен, и 0 — когда он сброшен. Эти значения можно изменить с помощью методов
onvalueoffvalueЕсли по какой-то причине мы хотим закрасить флажок серым, то можем с помощью метода
statedisabledactivenormalИзменим пример в листинге 12.3. Пусть речь идет не о дополнительных, а о профилирующих университетских курсах. Если не считать сдвоенных курсов, то в каждый момент времени можно выбрать не более одного предмета. В таком случае нам понадобятся переключатели (их реализует класс
TkRadioButton
