All,
我有一个我正在开发的 win32 perl TK 应用程序,为了使用户对此简单,我想将 Windows 资源管理器/桌面中的文件夹的 N 拖放功能拖放到我的应用程序中的小部件(例如文本框等)上。
原因是消除手动目录/文件选择对话框等。
一些示例代码将不胜感激。提前谢谢。
杰里米。
有模块 Tk::D ropSite 应该适合你。
可以在此处找到示例代码:http://www.nntp.perl.org/group/perl.tcltk/2010/02/msg375.html
这是一个工作示例代码:
#!perl
use strict;
use Tk;
use Tk::DropSite;
use Tk::Pane;
my $textVariable = "drag here";
my $mw = MainWindow->new;
my $frame = $mw->Frame(
)->pack(-side => 'top', -expand => 1, -fill => 'x');
$frame->Label(
-text => "My Label",
-anchor => 'w',
-width => 10,
)->pack(-ipady => 1, -side => 'left');
my $entry = $frame->Entry(
-textvariable => $textVariable,
-width => 40,
)->pack(-side => 'left');
$frame->DropSite(
-dropcommand => [&AcceptDrop, $frame],
-droptypes => ('Win32'),
);
$mw->MainLoop;
sub AcceptDrop {
my ($widget, $selection) = @_;
my $filename;
$filename = $widget->SelectionGet(
-selection => $selection,
'STRING'
);
$textVariable = $filename;
} # /AcceptDrop
如果你懂德语,看看这里:http://www.perltk.de/tk_widgets/howto_perl_tk_tkx_comparison.html