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";
}
| [reply] [d/l] [select] |
|
|
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 ........
| [reply] |
|
|
#!/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;
| [reply] [d/l] |
|
|
|
|
|
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. :-)
| [reply] |
|
|
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');
}
| [reply] [d/l] |
|
|
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.
| [reply] [d/l] [select] |
|
|
|
|
|
|
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.
| [reply] |