ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Программирование GUI приложений в perl
  #1  
Старый 26.03.2009, 02:46
Аватар для ph1l1ster
ph1l1ster
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме:
2075230

Репутация: 462
Отправить сообщение для ph1l1ster с помощью ICQ
По умолчанию Программирование GUI приложений в perl

# intro #

Не где не видел мануала на русском, поэтому решил написать. Многие знают что посредстами перла можно создавать GUI интерфейсы. И сейчас я вам об этом немного расскажу приведя в пример простенький текстовый редактор.

# Hello, World! #


У кого не установлена библиотека Tk установите её:

Код:
cpan> install Tk
или под active perl windows:

Код:
\perl\bin\ppm -> продукт Tk
Поехали дальше.

По старинке 'Hello, world!'
загружаем:
Код:
use Tk;
Создаём интерфейс для будущей программы:

Код:
$first = MainWindow->new(-title=>"Hello, all!");
$first->geometry("200x65");
MainWindow->new - саздаём новое окно.
-title=>"Hello, all!" - как думаю уже догадались, это титл окна.
geometry("200x65") - размеры окна.

Код:
$first -> Label(-text=>"Enter you name:") -> pack();
$first -> Entry(-textvariable=>\$name ) -> pack();
Label(-text=>"Enter you name:") - обычный Lable с надписью Enter you name:
$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();
Вот. пол дела уже сделано, далее создадим подпрограмму hello

Код:
$second = MainWindow->new(-title=>"Hello, all");
$second->geometry("200x20");
$second -> Label(-text=>"Hello, $name!") -> pack();
Все строчки думаю понятны. в 3 строчке выводит в Label то, что мы ввели в Enter you name: + Hello.

обязательно заканчиваем всё это:

Код:
MainLoop;
И в итоге мы получаем, вот такую мега супер прогу:



Код:
#!/usr/bin/perl
use Tk;
$first = MainWindow->new(-title=>"Hello, all!");
$first->geometry("200x65");
$first -> Label(-text=>"Enter you name:") -> pack();
$first -> Entry(-textvariable=>\$name) -> pack();
$first -> Button(
-text=>"Enter",
-height=>1,
-width=>15,
-command =>\&hello) -> pack();
sub hello{
$second = MainWindow->new(-title=>"Hello, all");
$second->geometry("200x20");
$second -> Label(-text=>"Hello, $name!") -> pack();
}
MainLoop;
# Text Editor #


Ну пожалуй и сделаем самый простенький текстовый редактор.

самое главное:

Код:
use Tk; # ноу комментс
$form = MainWindow->new(-title=>"Text Editor! (c) ph1l1ster"); # главное окно
$form->geometry("800x600"); # размеры
$form->resizable(0,0);# чтобы никто окно не шевелил ;)
$form->resizable(0,0); - 0 - и окно не подвижно, то есть, изменять размеры нельзя.

Если это текстовый редактор, естественно нужен скроулинг?)
Поэтому создаём форму ввода вместе со скроулом:
Код:
$txt = $form -> Scrolled('Text',-width => 111, -height=>50,,-scrollbars=>'e') -> pack ();
Чтобы редактор был полноценным. прикрутим выпадающее меня сверху.
меняшки сделаем такие:

File: New,Open,Save.Exit
Help: About


Код:
#  выпадающее меню
$bar_menu = $form -> Menu(); 
$form -> configure(-menu => $bar_menu);
$file = $bar_menu -> cascade(-label=>"File", -underline=>0, -tearoff => 0);#  первая кнопка
$help = $bar_menu -> cascade(-label =>"Help", -underline=>0, -tearoff => 0);#  вторая кнопка
$file -> command(-label => "New", -underline=>0, -command=>sub { $txt -> delete('1.0','end');} ); #  меню в первой кнопе - создать новое
$file -> command(-label =>"Open", -underline => 0, -command => [\&open, "Open"]);#  меню в первой кнопе - открыть
$file -> command(-label =>"Save", -underline => 0, -command => [\&save, "Save"]);#  меню в первой кнопе - сохранить
$file_types = [ ['Text Files', '.txt'], ['All Files',   '*'],];#  типы файлов
$file -> separator();#  разделитель
$file -> command(-label =>"Exit", -underline => 1,-command => sub { exit } ); #  меню в первой кнопе - выход
Сначала создаюм основное меню:
$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 {
$open = $form->getOpenFile(-filetypes => $file_types, -defaultextension => '.txt');}
Сохранить, функция getSaveFile

Код:
-command => [\&save, "Save"]
и комманда:
Код:
sub save {
$save = $form->getSaveFile(-filetypes => $file_types, -initialfile => 'test', -defaultextension => '.txt');}

Exit:
проще ничего нет
Код:
-command => sub { exit }
ну а теперь самое главное, для чего и пишутся проги, это About

Кликом на кнопку тупо открывать другое окно:

Код:
$ab = MainWindow->new(-title=>"Text Editor! (c) ph1l1ster # About");
$ab->geometry("320x150");
$ab->resizable(0,0);
$ab -> Label(
-text=>"Hello! ;)

This is you first GUI programm on perl :)

This is very easy.


Respect all whack members.

(c) ph1l1ster | special from all")
Думаю тут всё понятно.

Ну вот и всё, мы подошли к концу.

плучилось так вот:



# The End #


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

По мере узноваимости буду дополнять, а сейчас всё
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение на Perl web-интерфейса c базой данных Oracle VaTTka Статьи 2 21.12.2008 18:23
Поддержка прокси в сплоитах на Perl LWP::UserAgent 3er0 Авторские статьи 0 08.06.2006 13:48
Опасность ошибок Perl недооценивалась? 1251soldier Мировые новости 0 01.12.2005 20:56
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ