in reply to Re^2: file open in perl tk
in thread file open in perl tk

Thanks for replay, I am facing problem here , I opened the file in read mode,if i open it as write mode iam not getting any contents on that file , more over i want to save the edited fields , how can i save..........., please help me. #!/usr/bin/perl -w # Create a sub window at the request of the user use Tk; use strict; my $mw = MainWindow->new; $mw->configure(-background => 'black', -foreground => 'white'); $mw->geometry("400x100"); $mw->title("Multiple Windows Test"); my $button1 = $mw->Button( -text => "view Results", -background => "cyan", -command => \&button1_sub)->pack(-side=>"right"); $mw->Button(-text => "Exit", -command => sub{exit})->pack(-side=>"bottom"); sub button1_sub { my $subwin1 = $mw->Toplevel; $subwin1->geometry("400x300"); $subwin1->title("Sub Window #1"); my $fh; open ($fh,"<+test.txt") or die $!; my @contents = <$fh>; my $sublable = $subwin1->Scrolled('Text', -scrollbars => 'osoe', )->pack; $sublable->insert('end',@contents); close($fh); my $subwin_button = $subwin1->Button(-text => "Close window", -command => $subwin1 => 'destroy')->pack(-side=>"bottom"); #=================================Creating save buttion on subwindow =========== my $save_button = $subwin1->Button(-text=>'save', -command =>\&get_save, -background =>'cyan')->pack(-side=>'right'); } MainLoop; sub get_save { getSaveFile(-title => 'Select a file to APPEND',-defaultextension=>'.in'); }

Replies are listed 'Best First'.
Re^4: file open in perl tk
by zentara (Cardinal) on Nov 03, 2010 at 09:52 UTC
    You should learn to use code tags to help us read your code
    <code> ....your code here </code>
    but here is a working version, of what I THINK you want.
    #!/usr/bin/perl use warnings; use strict; use Tk; use Tk::FileSelect; my $mw = MainWindow->new; $mw->configure( -background => 'black', -foreground => 'white' ); $mw->geometry( "400x100" ); $mw->title( "Multiple Windows Test" ); my $button1 = $mw->Button( -text => "view Results", -background => "cyan", -command => \&button1_sub )->pack( -side => "right" ); $mw->Button( -text => "Exit", -command => sub { exit } ) ->pack( -side => "bottom" ); sub button1_sub { my $subwin1 = $mw->Toplevel; $subwin1->geometry( "500x400" ); $subwin1->title( "Sub Window #1" ); my $fh; open( $fh, '+<', "./$0" ) or die $!; #just open script for test my @contents = <$fh>; # print "@contents\n"; close( $fh ); my $sublable = $subwin1->Scrolled( 'Text', -scrollbars => 'osoe', )- +>pack; $sublable->insert( 'end', @contents ); my $subwin_button = $subwin1->Button( -text => "Close window", -command => sub {$subwin1 => 'destroy'} )->pack( -side => "bottom" ); #=================Creating save buttion on subwindow =========== my $save_button = $subwin1->Button(-text=>'save', -command =>\&get_save, -background =>'cyan')->pack(-side=>'right'); + } MainLoop; #sub get_save{ # getSaveFile(-title => 'Select a file to APPEND',-defaultextension=>' +.in'); #} sub get_save { my $dst = $mw->getSaveFile( -initialdir => $ENV{HOME}, -defaultextension => '.in', -title => 'Save', -filetypes => [ [ 'myfiles' => '.in' ], [ 'All files' => '*' ], ], ); $dst ||= '<undef>'; warn "dst=$dst"; }

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

      Thank you very much for helping me, one more issue , the using above mentioned code I am not able to "save" the changes which are made by the user , how can i save the changes ........

        You have 2 easy ways. One is to use a TextEdit widget, instead of a Text widget. The TextEdit will give you a Save and SaveAs entry in the File menu. Google for examples.

        To keep your basic design though, something like this code is what you want:

        #!/usr/bin/perl use warnings; use strict; use Tk; use Tk::FileSelect; my $mw = MainWindow->new; $mw->configure( -background => 'black', -foreground => 'white' ); $mw->geometry( "400x100" ); $mw->title( "Multiple Windows Test" ); my $button1 = $mw->Button( -text => "view Results", -background => "cyan", -command => \&button1_sub )->pack( -side => "right" ); $mw->Button( -text => "Exit", -command => sub { exit } ) ->pack( -side => "bottom" ); sub button1_sub { my $subwin1 = $mw->Toplevel; $subwin1->geometry( "500x400" ); $subwin1->title( "Sub Window #1" ); my $fh; open( $fh, '+<', "./test.txt" ) or die $!; my @contents = <$fh>; # print "@contents\n"; close( $fh ); my $sublable = $subwin1->Scrolled( 'Text', -scrollbars => 'osoe', )- +>pack; $sublable->insert( 'end', @contents ); my $subwin_button = $subwin1->Button( -text => "Close window", -command => sub {$subwin1 => 'destroy'} )->pack( -side => "bottom" ); #=================Creating save buttion on subwindow =========== my $save_button = $subwin1->Button(-text=>'save', -background =>'cyan', -command => sub{ my $dst = $mw->getSaveFile( -initialdir => $ENV{HOME}, -defaultextension => '.in', -title => 'Save', -filetypes => [ [ 'myfiles' => '.in' ], [ 'All files' => '*' ], ], ); $dst ||= "$0.edit"; #in case user hits cancel warn "dst=$dst"; open (my $fh, '>',$dst) or die "$!\n"; print $fh $sublable->get("1.0","end"); } )->pack(-side=>'right'); } MainLoop;

        I'm not really a human, but I play one on earth.
        Old Perl Programmer Haiku ................... flash japh
Re^4: file open in perl tk
by kcott (Archbishop) on Nov 03, 2010 at 09:13 UTC
    Thanks for replay, I am facing problem here , ...

    I am facing problem too! Please read Writeup Formatting Tips. I may be able to help but there's no way I'm going to attempt to wade through the mess you've currrently posted. Fix it up and I'll take a look. :-)

    -- Ken

      Hi please have a look on it, this is my code , here iam able to open the file but i can't save the changes , can you help me how can i do it.
      #!/usr/bin/perl -w # Create a sub window at the request of the user use Tk; use strict; my $mw = MainWindow->new; $mw->configure(-background => 'black', -foreground => 'white'); $mw->geometry("400x100"); $mw->title("Multiple Windows Test"); my $button1 = $mw->Button( -text => "view Results", -background => "cyan", -command => \&button1_sub)->pack(-side=>"right +"); $mw->Button(-text => "Exit", -command => sub{exi +t})->pack(-side=>"bottom"); sub button1_sub { my $subwin1 = $mw->Toplevel; $subwin1->geometry("400x300"); $subwin1->title("Sub Window #1"); my $fh; open ($fh,"<test.txt") or die $!; my @contents = <$fh>; my $sublable = $subwin1->Scrolled('Text', -scrollbars => 'osoe', )->pack; $sublable->insert('end',@contents); close($fh); my $subwin_button = $subwin1->Button(-text => "Close w +indow", -command => [$subwin1 => 'destroy'])->pack(-side=>"bot +tom"); #=================================Creating save buttio +n on subwindow =========== my $save_button = $subwin1->Button(-text=>'save', -command =>\&get_save, -background =>'cyan')- +>pack(-side=>'right'); } MainLoop; sub get_save { getSaveFile(-title => 'Select a file to APPEND',-defau +ltextension=>'.in'); }

        Firstly, thanks formatting the page.

        I saved the code as tk_edit_prob.pl, ran it and got:

        $ tk_edit_prob.pl Assuming 'require Tk::Gedi;' at ./tk_edit_prob.pl line 26 Tk::Error: Can't locate Tk/Gedi.pm in @INC (@INC contains: ...

        Line 26 is:

        my $sublable = $subwin1->Scrolled('Gedi',

        So, put use Tk::Gedi; after use Tk; - that's fairly minor.

        I went to CPAN to get Tk::Gedi but it's not there. Let me know where you got this module from and I'll look into the problem further.

        -- Ken

        vr786:

        Thanks for formatting the code.

        Please note that you can actually go back and repair a node, so next time you want to fix it, you can go back and add the code tags. Remember to add an "Update" to it, so people can see that the content changed. (It makes it easier to make sense of a conversation that way.)

        ...roboticus

        Update: Actually, I didn't update this node. I just wanted to provide an example.