![]() |
Программирование GUI приложений в perl
# intro # Не где не видел мануала на русском, поэтому решил написать. Многие знают что посредстами перла можно создавать GUI интерфейсы. И сейчас я вам об этом немного расскажу приведя в пример простенький текстовый редактор. # Hello, World! # У кого не установлена библиотека Tk установите её: Код:
cpan> install TkКод:
\perl\bin\ppm -> продукт TkПо старинке 'Hello, world!' :) загружаем: Код:
use Tk;Код:
$first = MainWindow->new(-title=>"Hello, all!");-title=>"Hello, all!" - как думаю уже догадались, это титл окна. geometry("200x65") - размеры окна. Код:
$first -> Label(-text=>"Enter you name:") -> pack();$first -> Entry - это уже изменяемый label, тоесть сюда мы можем записать, удалить вырезать и тд. -textvariable=>\$name - опция textvariable даёт понять, что нужно записать введённые символы в переменную $name Далее, создаём кнопку. с параметрами: -text=>"Enter" - надпись на кнопке -height=>1 - ширина -width=>15 - длинна -сommand =>\&hello - при нажатие на кнопку, выполняется подпрограмма hello Код:
$first -> Button(-text=>"Enter",-height=>1,-width=>15, -сommand =>\&hello) -> pack();Код:
$second = MainWindow->new(-title=>"Hello, all");обязательно заканчиваем всё это: Код:
MainLoop;http://i009.radikal.ru/0903/8c/ebb13ed48b84.jpg Код:
#!/usr/bin/perl# Text Editor # Ну пожалуй и сделаем самый простенький текстовый редактор. самое главное: Код:
use Tk; # ноу комментсЕсли это текстовый редактор, естественно нужен скроулинг?) Поэтому создаём форму ввода вместе со скроулом: Код:
$txt = $form -> Scrolled('Text',-width => 111, -height=>50,,-scrollbars=>'e') -> pack ();меняшки сделаем такие: File: New,Open,Save.Exit Help: About Код:
# выпадающее меню$file = $bar_menu -> cascade $help = $bar_menu -> cascade и подменю: $file -> command - для каждого, у нас - New, Open, Save.Exit опцией -command задаём комманду после нажатия опция -underline отвечает за подчёркивание снизу, без него лучше, поэтому = 0 Далее определим какие типы файлов мы будет сохранять\открывать: Код:
$file_types = [ ['Text Files', '.txt'], ['All Files', '*'],];Ну а теперь приступим к назачению комманд кнопкам. Для начала создадим новый документ. для етого тупо очистим форму: Код:
$txt -> delete('1.0','end');Давай теперь попробуем открыть файл, за это отвечает функция getOpenFile Чтобы незасорять код создадим попрограмму open Код:
-command => [\&open, "Open"]Код:
sub open {Код:
-command => [\&save, "Save"]Код:
sub save {Exit: проще ничего нет :) Код:
-command => sub { exit }Кликом на кнопку тупо открывать другое окно: Код:
$ab = MainWindow->new(-title=>"Text Editor! (c) ph1l1ster # About");Ну вот и всё, мы подошли к концу. плучилось так вот: http://s59.radikal.ru/i166/0903/c5/a11c430562e8.jpg # The End # Ну вот я расскозал немного основ. Это хоть и самая малость, но банально задавать команды для нажатий кнопок и писать в форме вы уже научились. По мере узноваимости буду дополнять, а сейчас всё :) |
Ошибок орфографических куча,исправь.
|
Цитата:
|
Цитата:
|
Цитата:
Орфографических ошибок куча. Не насилуй мой мозг. Tk интерфейсы оооооооочень тормозят при выполнение каких то объёмных задач скриптом. Да и не несёт статья никакой смысловой нагрузки |
ph1l1ster, вообще MainLoop не обязательно писать в самом конце файла. Просто до ее вызова должны быть определены все интерфейсные переменные! Да и вообще пользовать Tk для построения интерфейса, на мой субъективный взгляд, бессмысленно. Во-первых, как здесь уже упоминалось, тормозит (но это все зависит от реализации!), а во-вторых под линухом выглядит ужасно (А винду я не люблю :-) )!
По этому пользуйтесь Qt, Gtk или Wx! :-) |
Цитата:
|
вот эщо несколько простих примеров tk perl:
# Create a sub window at the request of the user http://s60.radikal.ru/i169/0903/53/63f58fcff746.jpg PHP код:
# create radio buttons http://i035.radikal.ru/0903/d7/da04456a5b5a.jpg PHP код:
# create checkbox buttons http://s42.radikal.ru/i097/0903/c3/ead6b83dae00.jpg PHP код:
# color buttons http://s61.radikal.ru/i174/0903/77/82d81cb129a7.jpg PHP код:
|
вот ,кстати, довольно понятний онлайн-учебник:
http://www.perl.com/pub/a/1999/10/perltk/ |
| Время: 18:01 |