Вход/Регистрация
Программирование на языке Ruby
вернуться

Фултон Хэл

Шрифт:

 pack EntryPack

end

lab_user = TkLabel.new(fr2) do

 text "User name"

 pack LabelPack

end

ent_user = TkEntry.new(fr2) do

 width 21

 font "{Arial} 12"

 textvariable var_user

 pack EntryPack

end

lab_pass = TkLabel.new(fr3) do

 text "Password"

 pack LabelPack

end

ent_pass = TkEntry.new(fr3) do

 width 21

 show "*"

 textvariable var_pass

 font "{Arial} 12"

 pack EntryPack

end

btn_signon = TkButton.new(fr4) do

 text "Sign on"

 command proc {} # Ничего не делает!

 pack ButtonPack

end

btn_cancel = TkButton.new(fr4) do

 text "Cancel"

 command proc { exit } # Просто выход.

 pack ButtonPack

end

top.pack FramePack

fr1.pack FramePack

fr2.pack FramePack

fr3.pack FramePack

fr4.pack FramePack

fr1a.pack Frame1Pack

fr1b.pack Frame1Pack

var_host.value = "addison-wesley.com"

var_user.value = "debra"

var_port.value =23

ent_pass.focus

foo = ent_user.font

Tk.mainloop

Прежде всего разберемся с размещением виджетов. Сначала мы создали несколько фреймов, расположенных друг под другом. В самом верхнем фрейме есть два фрейма поменьше, расположенных по горизонтали.

В листинге 12.2 встречается также метод

packing
, единственная цель которого — сделать код чуточку чище. Он возвращает хэш, содержащий значения атрибутов
padx
,
pady
,
side
и
anchor
.

Объекты

TkVariable
предназначены для ассоциирования полей ввода с переменными. В классе
TkVariable
определен метод доступа
value
, который позволяет получать и устанавливать значение, хранящееся в объекте.

При создании объекта

TkEntry
, например
ent_host
, задаем атрибут
textvariable
, который связывает его с соответствующим объектом
TkVariable
. Иногда мы явно указываем ширину поля методом
width
; если это не сделано, то будет автоматически выбрана разумная ширина, обычно определяемая значением, которое в данный момент хранится в поле. Часто ширину подбирают методом проб и ошибок.

Шрифты задаются для полей ввода так же, как для меток. Аналогично обстоит дело и с цветами, которые в этом примере не задаются. Если шрифт пропорциональный, то два поля одинаковой ширины на экране могут оказаться различными.

Как обычно, необходимо вызвать метод

pack
. Мы немного упростили вызовы за счет использования констант.

Для поля, содержащего пароль, вызывается метод

show
, поскольку вводимое в него значение не должен видеть человек, заглядывающий через плечо. Вместо набираемых пользователем символов в таком поле будет отображаться символ, переданный методу
show
в качестве параметра (в данном случае звездочка).

Я уже сказал, что кнопки тут нужны только для красоты. Кнопка Sign on вообще ничего не делает, a Cancel завершает программу.

У полей ввода есть и другие атрибуты. Можно изменять значение из программы, не заставляя пользователя вводить его; можно задать шрифт и цвета; можно изменить характеристики курсора, указывающего место вставки, и перемещать его в нужное место. И многое, многое другое. Полное описание вы найдете в руководстве.

Раз уж мы заговорили о вводе текста, будет уместно упомянуть виджет

Text
. По сравнению с полем ввода это примерно то же, что двухместный планер по сравнению космическим челноком. Виджет
Text
спроектирован специально для ввода больших фрагментов текста, насчитывающих много строк, и по существу является основой для создания полноценного редактора. Он довольно сложен, поэтому мы не будем его здесь рассматривать.

  • Читать дальше
  • 1
  • ...
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: