Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Yury Yurevich                        2:5020/400     17 Feb 2005  09:52:33
 To : Yury Yurevich
 Subject : Re: Perl/Tk
 -------------------------------------------------------------------------------- 
 
 Yury Yurevich пишет:
 
 > Интересует информация по теме perl/tk.
 > 
 > Построение GUI в Perl при помощи Tk изучал по "Mastering Perl/Tk" 
 > (изд-во O'Reilly), читал статьи с www.perltk.org. Hаписал пару несложных 
 > программ. Хотел бы пообщаться со знающими людьми на тему правильного 
 > подхода к написанию Tk-интерфейса.
 
 Теперь конкретные вещи:
 
 Возникла необходимость построить наборь полей ввода, для этого я написал 
 функцию, которой передаются параметры:
 1. родительский виджет
 2. ссылка на массив названий полей
 3. ссыдка на ключи, в которых хранятся введенные данные (для хранения 
 данных я использовал глобальный хеш DAT)
 4. Опционально -- номер строки ввода, на которую нужно поставить фокус
 
 В итоге формируется массив хешей (с ключами frame, label и entry), 
 которые содержат ссылки на соответствующие объекты.
 
 Таким же образом я хочу сделать и функцию, которая будет формировать 
 массив не только строк ввода, но и других виджетов ввода (ниспадающий 
 список, etc...)
 
 Вопрос собственно в правильности подхода. Hасколько 
 правильно\неправильно я сделал? Hе хочеться в очередной раз изобретать 
 велосипед, может кто уже делал похожие вещи?
 
 Вопросов на самом деле масса. В первую очередь вопросы касаются не 
 отдельных виджетов, а построению полнофункционального интерфейса. И 
 поэтому, интересуют примеры построения на Perl/Tk приложения более 
 сложного, чем примеры из widget.
 
 Код:
 sub fieldsinit {
 
      d("fieldsinit") if DEBUG;
 
      my $toplevel = shift;
      my $label_ary = shift;
      my $var_ary = shift;
      my $focus = shift || 0;
 
      d("fieldsinit at $toplevel") if DEBUG;
 
      my @fields=();
 
      my $i=0;
      d(":: fields generating formframe") if DEBUG;
      my $formframe = $toplevel->Frame(
          -relief => 'groove',
          -borderwidth => '2'
        )->pack(
              -side=>'top',
              -pady => '2',
              -anchor => 'n'
        );
 
      d(":: open cycle for fields (".$#$label_ary.")") if DEBUG;
 
      for($i=0;$i<=$#$label_ary;$i++) {
 
          d(":: $i cycle of fields") if DEBUG;
          $fields[$i]={};
          $fields[$i]->{frame}=$formframe->Frame(
                      )->pack(
                          -side=>'top',
                          -padx => '2',
                          -pady => '2',
                          -anchor => 'e',
          );
          $fields[$i]->{entry}=$fields[$i]->{frame}->Entry(
              -width => '30',
              -relief => 'sunken',
              -textvariable =>\$DAT->{$var_ary->[$i]},
                  )->pack(
                      -side => 'right'
          );
          $fields[$i]->{label}=$fields[$i]->{frame}->Label(
              -text => $label_ary->[$i],
              -anchor => 'e',
              -font => $mainfont,
                  )->pack(
                      -side => 'right',
          );
      } # end of cycle
 
      # setting focus
      d(":: focus at $focus entry") if DEBUG;
      $fields[$focus]->{entry}->focus();
 
      d("end of fieldsinit") if DEBUG;
 
      return \@fields;
 
 } # end of sub fieldsinit
 
 P.S.
 Есть ли примеры создания\сопровождения ПО на Perl/Tk? Или приложения на 
 Perl/Tk ограничиваются примерами и созданием одноконных фронтендов к 
 стандартным утилитам? Hе станет ли для более-менее серъезного проекта Tk 
 узким местом? Какая есть альтернатива?
 
 -- 
 wbr, Yury Yurevich
 icq://209846262
 http://asko-zabota.ru
 --- ifmail v.2.15dev5.3
  * Origin: ASKO-Zabota (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Perl/Tk   Yury Yurevich   15 Feb 2005 13:14:48 
 Re: Perl/Tk   Yury Yurevich   17 Feb 2005 09:52:33 
 Re: Perl/Tk   Sergey Leschenko   17 Feb 2005 12:03:22 
Архивное /ru.perl/91045315a58a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional