Sunday, May 6, 2007

Кросс-платформенные приложения с GUI на Ruby

Ради и интереса решил разобраться с тем как можно создать обычное приложение с формочками с Ruby. Сделать это можно с с помощью 2-х библиотек:
Tk и Gtk. Первая - шутка изначально сделана под язык Tcl (с ним я не сильно знаком, и использовать его мне не доводилось). Вторая - кросс-платформенная библиотека. Обе позволяют абстрагироваться от ОС. Не то чтобы я решил писать оконные приложения под Linux и пр, откозавшишь от .NET. Просто интересно.

И так, для начала я решил посмотреть на Tk. Ставиться вместе с Ruby. Сначала немного о внутреннем устройстве. В сердце библиотеки лежит иерахия классов лежат TkEntry и TkFrame. Остальное наследуется от них. Есть Layout Manager'ы, как в Swing под Java.
Так же есть около 30 элементов управление, но нет combobox (извесный как drop down list), я не нашел, зато есть уже готовый контрол, но не являющиейся частью библиотеки и входит в примеры. Есть Grid(TkGrid, в .NET аналог DataGrid и GridView), это очень удивило. В плане готовых компонентов, проблем нет. К тому же есть библиотека красивых расширений - iwidget - там много всего интресного есть.

Теперь немного практики:
сначала делаем
require 'tk'
TkFrame.new(){|f|
label = TkLabel.new(f, :text=>'Hello, World').pack(:fill=>:x)
}
Tk.mainloop

Все! есть формочка c надписью, растянутой на весь экран по ширине.
Как это работает:
сначала делаем главной элемент - саму формочку (f)
дальше на нее (первый аргумент конструктора TkLabel) кладем созданый объект у которого свойство текста установленно в "Hello, World". После этого располагаем созданную надпись на окне с соотвестующим Layout

Вот в общем и все. В заключение могу порекомендовать посмотреть на это собственными глазами.
Примеры можно найти в папке, куда установлен Ruby: samples/tk

П.С.
Если Вы заметили неточность или ошибку - пишите в комменты плз


No comments: