Προς το περιεχόμενο

Perl/TK


r00t

Προτεινόμενες αναρτήσεις

Δημοσ.

Χαιρετώ,

 

Αν έχει ασχοληθεί κανείς ή ξέρει Perl/Tk θα εκτιμούσα ιδιαίτερως να με διαφωτίσει.

 

 

Σε MacosX (δεν έχει σημασία, είναι σαν Unix) τρέχω v5.8.0 built for darwin

και ΤΚ για δημιουργία GUI.

 

Αυτό που θέλω να κάνω είναι το εξής :

 

Έχω πολλά scripts που γίνονται εκτελέσιμα από terminal, δηλαδή

perl scriptname.pl και μετά από 30 - 40 λεπτά δημιουργούνε μέσα στο ίδιο directory ένα αρχείο .log το οποίο διαβάζω μετά εγώ και βλέπω τα αποτελέσματα. Προσπαθώ όμως να κάνω ένα application με Perl/Tk το οποίο με κάποιους widgets ( εδώ έχω κολλήσει ,με ποιούς; ) θα εισάγω κάθε script μέσα σε ένα πεδίο, θα φτιάξω ένα κουμπάκι start/stop και αυτό θα τρέχει. όταν τελειώσει, θα πρέπει να μπορώ να το δω (δηλαδή κάπου πρέπει να έχω κάποιο status) . Για να καταλάβατε καλύτερα,

 

 

Script -------Status----Start/Stop----------View log

script1.pl Running

script2.pl Failed

script3.pl Ready

script4.pl Running

 

Καμεία ιδέα κανείς

  • Απαντ. 35
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Hi root

 

Prokeite na asxolei8o kai ego me Perl/Tk entos kapoion hmeron. 8elo episeis na ftiakso ena application.

 

Mazeuo siga siga plhrofories, apo Google kurios.

 

Xoris na exo asxoli8ei entatika, h na exo ftiaksei diko mou script pou na paragei visual enviroment, nomizo pos h dhmourgia tou einai aplh(apo kati samples pou exo koitaksei)

 

I8ela na se rotiso se proth fash gia widgets.

Δημοσ.

Hello,

 

 

Βασικά βρήκα άκρια......TK:TableMatrix. Αν πάς στο CPAN θα δεις πολλά modules και αρκετά παραδείγματα, αλλά κλασσικά είναι τοποθετημένα με πολύ geeky λογική και άντε να βγάλεις άκρια. Αν θες κάποια βοήθεια,

ρώτα, όχι ότι έγινα ο super - duper - Perl/TK monk αλλά ...

 

Επίσης ορίστε και μερικά ενδιάφέροντα links.

 

http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/index.html

http://www.perlmonks.org/

http://w4.lns.cornell.edu/~pvhp/ptk/doc/

http://perl.about.com/library/weekly/aa030500a.htm

http://tmml.sourceforge.net/doc/tk/colors.html

 

 

To μοναδικό forum που μου απαντήσανε.

comp.lang.perl.tk

 

 

άσχετο αλλά δεν υπάρχουν register Έλληνες Perl προγραμματιστές.....

:(

Δημοσ.

To usenet einai o kateksoxin topos sunantiseis ton Perl programmer.

 

Exeis ftiaksei kanena sample gui? Could you share your code?

 

An den kano la8os uparxei kai ena book tou O'reilly gia Perl Tk/Tcl(dior8ose me an kano la8os)

Δημοσ.

Λοιπόν έχουμε και λέμε,

 

O φίλτατος o'reilly έχει βιβλίο αλλά δυστυχώς δεν το βρήκα σε pdf στα γνωστά κατατόπια. Παρόλα αυτά κατάφερα και έκανα κάτι. Ο κώδικας που βλέπεις παρακάτω κάνει τα περισσότερα ( έχω βγάλει κάποια sensitive πραγματάκια για λόγους ασφαλείας) από αυτά που ζήτησα να με βοηθήσετε.

 

Χρησιμοποιώ το widget Notebook και αυτό κάνει τα 3 tabs.

To πρώτο tab είναι απλά για να έχει χώρο για text editing,

Το 2ο και το 3ο tab είναι σχεδόν το ίδιο πράγμα, μόνο που το

2ο είναι ένας έτοιμος widget και απλά τον χρησιμοποιώ ενώ στο 3ο tab

έχω κάνει ένα δικό μου, παρόμοιο με το 2o τab.

 

Για να σου δουλέψει ο κώδικας μου, θα πρέπει να έχεις Perl/Tk installed και τα modules τα οποία χρησιμοποιώ. Αν τον τρέξεις πες μου το σε παρακαλώ γιατί θέλω βοήθεια σε 2 σημεία.

 

 

 

>
use Tk;
use English; 
#require Tk; 
use Cwd;
require Tk::FileSelect; 
require Tk::Dialog; 

#use Tk::TableMatrix::SpreadsheetHideRows;
require Tk::HList;
use diagnostics -verbose;
use Tk::Columns;

use Tk::DialogBox;
use Tk::NoteBook;
#use Data::Dumper;                        # convenient Dumper command....

#use Tk::Dialog;		                      # esp. Dialog box for display help
use Tk::ROText;	                          # and Read-only text box for output panes
#use Tk::Balloon;        # and balloon help


####################################################################
## 				                                             MAIN WINDOW                                              #
####################################################################
my $main = MainWindow->new();
  $main -> title ('My TK_app ');
  $main -> geometry ('800x600'); 



###  A notebook consisted of 3 pages  ########
my $notebook = $main->NoteBook(-dynamicgeometry =>'true',
                                                       -ipadx => 20, -ipady => 6);


$notebook->pack(-expand => "yes",
	-fill => "both",
	-padx => 3, 
	-pady => 3,
	-side => "top"); #This puts the notebook over the status line.


# Divide the working area into 3 tabs so the navigation of the user
# is easier
my $Config_p 	     = $notebook->add("config" ,   -label => "Config"    ,    -underline => 0);
my $Tc_p    	     = $notebook->add("Tc"     ,     -label => "Test cases",-underline => 0);
my $Viewlog_p    = $notebook->add("Viewlog", -label => "Logs"      ,    -underline => 0);

##        1ST TAB ##################
$input_text_area = $Config_p ->Scrolled('Text',       
            			                                        -wrap => "none",
				                                               -scrollbars => "se",
				                                               -width => 40, -height => 25,
				                                               -background => 'WhiteSmoke');

$input_text_area->pack(-side =>"top", -expand => 1, -fill => 'both');
$input_text_area->focus();  # gets focus on startup


##        2ST TAB ##################

my $l_Window = $Tc_p->TableEdit
  (
   '-file' => 'test.dat',
  );

$l_Window->Item
  (
   'Entry',
   '-name' => 'Date',
   '-default' => sub {localtime();},
  );


$l_Window->Item
  (
   'Entry',
   '-bg' => 'white',
   '-relief' => 'sunken',
   '-name' => 'Internet Address',

   '-expression' =>
      [
       '^[0-9]{1,3}?$',
       '^[0-9]{1,3}?\.$',
       '^[0-9]{1,3}?\.[0-9]{1,3}?$',
       '^[0-9]{1,3}?\.[0-9]{1,3}?\.$',
       '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?$',
       '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.$',
       '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?$',
      ],
  );

$l_Window->pack ('-expand' => 'true', '-fill' => 'both');
$l_Window->GeometryRequest (400, 200);



##################        3RD TAB ##################
$inputfr = $Viewlog_p->Frame(-relief=>'groove',
	      -label=>'Test cases panel',
	      -borderwidth=>3,
	      #-bg=>red,
	      )->pack(-side=>'top',
		      -anchor=>'nw',
		      -fill=>'both',
		      );
$incol1fr = $inputfr->Frame(#-relief=>'groove',
		    -borderwidth=>2,
		    #-bg=>'blue',
		    )->pack(-side=>'left',
			    -anchor=>'nw',
			    -fill=>'both',
			    );
$incol2fr = $inputfr->Frame(#-relief=>'groove',
		    -borderwidth=>2,
		    #-bg=>'green',
		    )->pack(-side=>'left',
			    -anchor=>'nw',
			    -fill=>'both',
		      );
$incol3fr = $inputfr->Frame(#-relief=>'groove',
		    -borderwidth=>2,
		    #-bg =>'black'
		    )->pack(-side=>'left',
			    -anchor=>'nw',
			    -fill=>'both',
			    );


# Annotation File #
$incol1fr->Label(-text=>'Please select your testcase file (*.pl)',
	 )->pack(-side=>'top',
		 -anchor=>'ne',
		 -pady=>3,
		 );

$testfile_e = $incol2fr->Entry(-state=>'normal',
		    -textvariable=> \$testfile,
		    -width=>60,
		    )->pack(-side=>'top',
			    -anchor=>'nw',
			    -pady=>3,
			    );
$incol3fr->Button(-text=>'Browse',
-command=> [ \&selectsinglefile, \$testfile_e , \$main] ,
	 -borderwidth=>1,
	 -padx=> 0,
	 -pady=> 0,
	 )->pack(-side=>'top',
		 -anchor=>'nw',
);




##############               ANOTHER BUTTON BAR #########################
my $but_frame = $Viewlog_p->Frame();
  $but_frame->pack(-side => 'bottom', -anchor => "sw", -expand => 0, -fill => 'x', -padx => 0);


sub button {
   my ($this, $text, $command) = @_;
   my $button = $this->Button(-text => $text, -command => $command);
   
   $button->configure(-underline => '0');  # Alt-firstchar as hotkey
   $button->pack(-side => 'left');
   
   return $button;
}

 button($but_frame, "Insert", "sub {add_lines();  }" );
 button($but_frame, "Delete", "sub {del_lines();  }" );

 
######################  	Columns *****************###################

my $Columns = $Viewlog_p -> Columns

(
   '-columnlabels' => [qw (No File Date Status Action log )],
   #'-command' => sub {printf ("Selected [%s]\n", join ('|', @_));},
   #'-image' => $l_MainWindow->Pixmap ('-file' => 'mini-doc.xpm'),
   '-width' => '20',
   '-height' => '60',
   '-sortcommand' => '$a cmp $b',
   '-listforeground' => 'blue4',
   '-listbackground' => 'beige',
   '-buttonbackground' => 'gray',
   '-buttonforeground' => 'black',
   '-selectmode' => 'extended',
   '-sort' => 'true',
   #'-zoom' => 'true',
  );

$Columns->pack
  ('-anchor' => 'sw',
   '-expand' => 'false',
   '-side' => 'top',
   '-fill' => 'both',
  # '-after' => ' ',
 
 #'-side '=>'bottom',
   #'-fill' => 'both',
  );

  $Columns->insert ('0', '1',$testfile_e,sub {localtime();},'Running','Start','Not ready');

MainLoop;

sub selectsinglefile {
   my $entryblankref = shift;
   my $entryblank = $$entryblankref;
   my $mwref = shift;
   my $mw = $$mwref;

   
   my $filetypes = [ ['Perl test cases ', ['.pl']], ['All files', ['*']]];
   my $file = $mw->getOpenFile(-title => "Please choose a configuration file",
                           	      -filetypes => $filetypes, 
			                      -defaultextension => ".pl");
   # Prompt the user that no file has been selected
   #return $fail_dialog->Show() if ! -f $filename;

   if (defined $file and $file ne '') {
       $entryblank->delete(0, 'end');
       $entryblank->insert(0, $file);
       $entryblank->xview('end');
   }
}
sub add_lines {
#$Columns->insert ('end', ['List', 'Row', 'Contents']);
#$Columns->insert ('end', {'column1' => 'List', 'column2' => 'Row', 'column3' => 'Contents'});

#$Columns->insert ('1','Test' 1,1,1,1,1);
$Columns->insert ('0', 'This is a test');

}
sub del_lines {
$Columns->delete (0, 'end');	
}

Δημοσ.

Katarxin 8elo na se rotiso poio IDE xrisimopoeis?

 

Exo TK installed, exo perl 5.6 ActviePerl.

 

To script 8a to trekso otan pao sto mhxanima mou, dhl se 2-3 meres kai 8a sou po apotelesmata.

 

Diavazo perl apo Learning Perl, to pasignosto tou O'reilly kai exo epishs to Programming Perl gia na ma8o ta vasika grhgora grhgora kai na epekta8o se DBI kai Tk.

 

Exeis vrei kanena kalo tutorial? Exo kai ego merika links 8a st doso se 2-3 meres.

Δημοσ.

Hello και πάλι,

 

 

Δεν χρησιμοποιώ IDE, δεν μου αρέσει ο προγραμματισμός με IDE, (άσε που δεν έχω βρει τίποτα της προκοπής). Οπότε vi τerminal και ξερό ψωμί. Όσο αφορά tutorials, όταν κάνεις "make install" έχει παραδείγματα για τους περισσότερους widgets, δηλαδή το πως θα χειριστείς τα Tk extensions της Perl. Για το πλήρες, αρκετά καλογραμμένο documentation θα κοιτάξεις στο CPAN για τα υπόλοιπα usenet.

 

 

Στα window$ χρησιμοποιείς cygwin ή κάτι σχετικό ;

Δημοσ.

Να σου πω την αλήθεια για Windows νομίζω πως είναι πιο εύκολο, αλλά το εργαλείο (λογισμικό) που σου κάνει όλη τη δουλειά, δεν είναι free αν θυμάμαι καλά. Επειδή εγώ δουλεύω σε Mac OSX, το οποίο βασίζεται σε Kernel FreeBSD, δεν με πολυενδιαφέρει να κάνω κάτι τέτοιο, αλλά για να βάλω τα επιπλέον modules, χρειάστηκα gcc και Perl 5.8, νομίζω οτι υπάρχουν αντίστοιχες απαιτήσεις για Windows.

 

 

Καλή συνέχεια.

 

 

ΥΓ: Η τρέχουσα έκδοση από αυτό που έχω κάνει post, διαφέρει πολύ,

οπότε για training, αν το δεις με προσοχή θα δεις μερικά bugs που έχω....(hint : casting).

 

YΓ2: Πολύ καλό βιβλίο είναι του O'Reilly, Perl Cookbook με πολύ καλές συνταγές. Θα το βρεις σε Kazaa ή άλλα peer2peer μπιχλιμπίδια.

 

 

:shock:

Δημοσ.

Exo provlima me to Tk::Columns

 

>

C:\PROGS>ppm
PPM interactive shell (2.2.0) - type 'help' for available commands.
PPM> install tk-columns
Install package 'tk-columns?' (y/N): y
Installing package 'tk-columns'...
Error installing package 'tk-columns': Could not locate a PPD file for package tk-columns
PPM>

 

Esy pos to ensomatoses mesa?

Δημοσ.

Πρέπει να κατεβάσεις κάθε module που χρησιμοποιώ ή πρόκειται να χρησιμοποιήσεις και να το κάνεις compile και add στα ήδη υπάρχοντα modules. Aς πούμε για παράδειγμα :

 

το Τκ::Column είναι module θα το βρεις στο εδώ

 

πήγαινε στο Download και μετά θα οταν κάνεις untar,gunzip και τελικά σου βγάλει ένα folder με όλα τα περιεχόμενα. Εκεί θα δεις και το make file. Οπότε δεν ξέρω πως θα το κάνεις στα Windows αλλά σε οτιδήποτε *NIX σύστημα, βγαίνει σε terminal και δίνεις με τη σειρά.

 

1. perl MakeFile.PL

2. Make

3. Make install

4. Make test

 

Μετά από αυτό θα είναι installed στη library η οποία ανάλογα με το κάθε λειτουργικό βρίσκεται σε διαφορετικό μέρος.

 

Σε αυτό το link εντόπισα μερικές πληροφορίες για Perl modules σε windows...

 

Kαλή τύχη

Δημοσ.

90 % είσαι οκ. Δεν έχω υπάρχει pc να το δοκιμάσω, θα πρέπει να σου βγάζει διαφορετικό error στο compiling. Βασικά αν σου λέει πάλι can not find καποιο_module.pm κατέβασε το από το CPAN και κάνε την ίδια διαδικασία.

Δημοσ.
:D empleksa se auth th diadikasia kai etrexa na vro ka8e pm pou mou elege cannot located mexri pou kolisa epeidei den uparxei ena zitoumeno pm sthn lista mou mou edoses sto CPAN to proto mi dia8esimo, kai etsi elikse adoksa to compiling to prog sou :( :(

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...