Perl TK открытая папка - PullRequest
1 голос
/ 08 июня 2011

Скажем, у нас есть поле ввода и кнопка. Когда пользователь нажимает кнопку, он должен выбрать путь из поля ввода и открыть соответствующую папку. Как я могу сделать это с помощью Perl / TK? Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

Вы можете сделать системный вызов процесса командной строки, который открывает браузер файлов.В Windows это, очевидно, команда start, в Linux будет работать что-то вроде gnome-open или nautilus.

sub open_directory {
  my $directory = shift;

  if ($^O eq 'MSWin32') {
    exec "start $directory";
  } elsif ($^O = 'linux') {
    exec "gnome-open $directory" or
    exec "kde-open $directory";
  # test for more OS cases
  } else {
    die "cannot open folder on your system: $^O";
  }
} 
2 голосов
/ 08 июня 2011

Возможно, вы захотите попробовать виджет, такой как Tk :: DirTree виджет .

#!/usr/bin/perl
use strict;
use warnings;

use Tk;
use Tk::DirTree;

my $mw = MainWindow->new;
$mw->title("Type path of directory and click OK");
$mw->geometry('400x300+'.int(($mw->screenwidth-400)/2).'+'.int(($mw->screenheight-300)/2));

my $dir = $mw->Entry( -text       => '',
                        -width      => 20, 
                        -font       => 'Courier 12 bold',
                        -background => 'Orange',
)->pack( -ipadx => 35 );

$dir->focus();

$mw->Button( -text       => 'Ok',
             -font       => 'Courier 12 bold',
             -background => 'Orange',
             -command    => sub{ dirwindow($dir) },
  )->pack(   -side       => 'left',
             -ipadx      => 40
);

$mw->Button( -text       => 'Exit',
             -font       => 'Courier 12 bold',
             -background => 'Orange',
             -command    => sub { exit }
  )->pack(   -side       => 'right',
             -ipadx      => 40
);

MainLoop;

sub dirwindow {
    my $d = shift;
    my $dir_val = $d->get;
    my $dl = $mw->DirTree(-directory => $dir_val)->pack(-fill => 'both', -expand => 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...