1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#!/usr/bin/perl use strict; use warnings; use Gtk2 '-init'; use utf8; my $file='/home/topeg/PERL/test.txt'; $file=select_file('Datei öffnen','open',$file); if($file) { print "FILE: $file\n"; } else { print "NO FILE\n"; } ######################################################################## sub select_file { my $title=shift // 'Select File'; my $action=shift // 'save'; # open, save, select-folder, create-folder my $file=shift; my $choose=Gtk2::FileChooserDialog->new ( $title, undef, $action, 'gtk-cancel' => 'cancel', 'gtk-open' => 'ok', ); $choose->set_filename($file) if($file && -f $file); $choose->set_default_response ('cancel'); $file=$choose->run() eq 'ok'? $choose->get_filename(): undef; $choose->destroy(); return $file; }
Guest MarkusWelche Gui verwendet wird ist eigentlich egal (dank activestate jedoch kein TK, sondern mind. Tkx), auch Farbgebung und Co ist mir egal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl use warnings; use strict; use Tk; use Tk::FileSelect; use Cwd; my $mw = MainWindow->new(); $mw->title("Some Window"); my $button = $mw->Button(-text => "Choose file", -command => sub {&selectFile($mw)}); $button->pack(-padx => 20, -pady => 20); MainLoop(); sub selectFile { my $mw = shift; my $diag = $mw->FileSelect(-directory => getcwd()); my $file = $diag->Show(); print "Selected file is: $file.\n"; }
2012-03-08T00:12:19 hlubenowVielleicht kannst/willst Du ja Tk doch noch nachinstallieren. Schwer zu sagen, ob Tk oder Tkx die Zukunft ist.
2012-03-08T00:12:19 hlubenowEdit: Wahrscheinlich ist Tk::FileDialog sogar noch etwas neuer und komfortabler als das hier verwendete Tk::FileSelect.
1 2 3 4 5 6 7
use strict; use warnings; use Tk; my $infile = $mw->getOpenFile; exit unless $infile; # oder return (in einer sub) open( my $in, '<', $infile ) or die("can't open $infile: $!");
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new(); $mw->title("Some Window"); my $infile = $mw->getOpenFile(); print "$infile\n";
2012-03-11T11:32:59 lichtkinddu sagtest du hättest das wx tut hier gelesen, mit dem wissen + was ich schrieb wäre es ein nobrainer gewesen und in 2min fertig
Guest Markus@hlubenow: Ich konnte TK unter activestate nicht mehr installieren und wenn ich es richtig gelesen habe ist das von activestate auch so gewollt. Soweit ich gelesne habe, steigen die auf TKx um.
Ich kopiere mir deinen TK Quellcode trotzdem. Man kann ja nie wissen, ob mans nicht nochmal gebrauchen kann. ;)
Guest MarkusSieht nach ActiveState aus.
Guest MarkusIm Gegensatz zu TKx, sehe ich für TK nur Erweiterungen, aber nicht das Grundmodul.
2012-03-27T12:51:16 KeanHast du auch oben im Menü "View all Packages" ausgewählt??
Standartmäßig werden nur die installierten angezeigt...
2012-03-30T13:35:06 KeanDann ist bei deiner Installation etwas schief gelaufen.
2012-04-02T12:27:17 KeanAber das Hinzufügen eines Repositories ist jetzt auch kein Hexenwerk. Ich würde dir in diesem Fall Bribes empfehlen.
-> http://www.bribes.org/perl/ppm
2012-04-04T07:19:53 KeanWürde mich dann mal interessieren ob es geklappt hat.
Gehe aber stark davon aus.