Книга: Программирование на языке Ruby
12.2.3. Кнопки
12.2.3. Кнопки
Для создания кнопки в Ruby/GTK2 предназначен класс Gtk::Button
. В простейшем случае мы задаем обработчик события clicked
, которое возникает, когда пользователь щелкает по кнопке.
Программа в листинге 12.5 позволяет ввести одну строку в текстовое поле и после нажатия кнопки All Caps! преобразует ее в верхний регистр. На рис. 12.4 показано текстовое поле до нажатия кнопки.
Листинг 12.5. Кнопки в GTK
$KCODE = "U"
require "gtk2"
class SampleWindow < Gtk::Window
def initialize
super("Ruby/GTK2 Sample")
signal_connect("destroy") { Gtk.main_quit }
entry = Gtk::Entry.new
button = Gtk::Button.new("All Caps!")
button.signal_connect("clicked") {
entry.text = entry.text.upcase
}
box = Gtk::HBox.new
box.add(Gtk::Label.new("Text:"))
box.add(entry)
box.add(button)
add(box) show_all
end
end
Gtk.init
SampleWindow.new
Gtk.main
Рис. 12.4. Пример простой кнопки в GTK
В листинге 12.5 определен класс SampleWindow
; при таком подходе класс может управлять собственным отображением и поведением (не заставляя вызывающую программу конфигурировать окно). Класс главного окна наследует Gtk::window
.
Как и в примере «Текущая дата», обработчик сигнала destroy завершает цикл обработки событий после закрытия главного окна.
Этот класс создает однострочное поле ввода (класс Gtk::Entry
) и кнопку Gtk::Button
с текстом All Caps!
. С кнопкой связан обработчик события clicked
, которое генерируется, когда пользователь нажимает и отпускает кнопку мыши, в то время как ее указатель находится над кнопкой.
Класс Gtk::Window
— производный от Gtk::Bin
, поэтому может содержать только один дочерний виджет. Чтобы добавить в окно два виджета, мы сначала помещаем их в контейнер HBox
, который, в свою очередь, делаем потомком главного окна. Виджеты, добавляемые в контейнер Gtk::НВох
, по умолчанию размещаются начиная с его правой границы. Есть также контейнер Gtk::VBox
, который упаковывает своих потомков по вертикали.
Как и раньше, чтобы главное окно (и все его потомки) стало видимым, необходимо вызвать метод show_all
.
Обработчик события clicked
вызывается при нажатии кнопки. Он получает текст, находящийся в поле ввода, преобразует его в верхний регистр и записывает обратно в поле ввода.
Собственно код приложения находится после определения класса SampleWindow
. В нем всего лишь создается главное окно и запускается цикл обработки событий.
- Использование кнопки Автосумма
- Исчезла Панель задач – нет часов, свернутых программ, кнопки Пуск
- Как разместить значки возле кнопки Пуск?
- На Панели быстрого запуска возле кнопки меню Пуск вмещается всего три значка. Как увеличить ее емкость?
- В Диспетчере задач пропали все вкладки, кнопки и пункты меню
- Как одним щелчком кнопки мыши закрыть несколько окон одновременно?
- Диски С: и D: невозможно открыть простым щелчком кнопки мыши. Появляется сообщение Не найден файл file.exe. Что делать?
- Перемещение и копирование ячеек с помощью кнопки мыши
- Повторное использование анимации для кнопки в состоянии hover
- 12.4.3. Кнопки
- Кнопки Qt
- Кнопки и группы кнопок