http://www.perlmonks.org?node_id=949149


in reply to Re^6: Perl tk - open file and print content
in thread Perl tk - open file and print content

If you want to print multiple files, it might be best to push all file selections into an array, then send the whole array to the printer, after selections are done. There are many ways to do it.
#!/usr/bin/perl use Tk; use strict; my $TOP = MainWindow->new; my $button = $TOP->Button(-text=> 'Print It' , -command => sub{ my $file_r = &fileDialog($TOP); print"\n selected this file $file_r\n"; # use whatever method you want to send # $file_r to the printer # like with Net::Cups print " printing now!\n"; # system( "lpr -lp0 -f $file_r"); #untested } )->pack(); MainLoop; sub fileDialog { my( $w ) = @_; my @types =( ["C files", [qw/.c++ .cpp .c/]], ["Log files", [qw/.log/]],, ["Text files", [qw/.txt/]], ["All files", '*'] ); my $file = $w->getOpenFile( -filetypes => \@types ); return($file); }

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^8: Perl tk - open file and print content
by Giorgio C (Novice) on Jan 23, 2012 at 12:29 UTC
    Pheraps i can't explain my self, i try to post the code so you can see where i wrong:
    #......All the menu items are not showed in the code, only the part of + interest.....: # OPEN FILE + $file->command( -label => 'Open', -accelerator => 'Ctrl-o', -underline => 0, -command => \&open_file); $mw->bind('<Control-o>', [\&open_file]); #SUPPORTED FILES TO OPEN my $types_OPEN = [ ['SFF files', '.sff'], ['All Files', '*'],]; sub open_file {my $open = $mw->getOpenFile(-filetypes => $types_OPEN, -defaultextension => '.sff'); $read_fh = IO::File->new("$open",'r'); read_text($read_fh); } sub read_text { my @lines; @lines = <$read_fh>; my $mw = MainWindow->new(-title=>'Colored Text'); $mw => print @lines; MainLoop }
    ........................................................ Now, the script works fine and the content of any opened file is printed out in the terminal! The problem is that i would like to print the content in a GUI windows (not only in the terminal, i'm using UBUNTU) but here the windows is opened but is blank !! Please don't call me pesky, but can you correct this script so to obtain what i need!!! TNX a lots

      stop using print function

      run  perl -MTk -e " my $te = tkinit->Scrolled( q/TextUndo/ )->pack; $te->Load( q/filename/ ); MainLoop "

      substitute  q/filename/ with a real filename, and when you paste the contents of the program into your real program, use $open like you have in your program, and thats it

      Run the widget demo, it also shows zentara way of using Tk::Text insert method

      Oh, there is no need , but you could use open/print if you really want,but, it helps to know perl Perl:TK - standard output to text widget

        Heartfelt thanks finally it works now!!!