Le code ci-dessous fonctionne sur ma machine sous Windows 7 avec Strawberry PERL 5.22.0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/usr/bin/perl
use strict;
use Tk;
use Tk::DropSite;
my $mw = new MainWindow(-width => 500, -height => 300);
my $label = $mw->Label(-text => "Drop on me", -anchor => 'center')->pack->place(-relwidth => 1.0, -relheight => 1.0);
$label->DropSite(-droptypes => [$^O eq 'MSWin32' ? 'Win32' : 'XDND'], -dropcommand => [\&dropFile, $label]);
MainLoop;
sub dropFile {
my ($widget, $selection) = @_;
my $filename = $widget->SelectionGet(
-selection => $selection,
'STRING'
);
print "DROP [$filename]\n";
} |
La preuve de l'exécution :
Et le résultat obtenu dans la fenêtre DOS :
Le même code exécuté sous Linux Mint 17.3 (avec PERL 5.18.2 et Tk 804.033 comme sur WIndows) donne l'erreur suivante :
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 25 (X_SendEvent)
Resource id in failed request: 0x2fd00fd
Serial number of failed request: 164
Current serial number in output stream: 165
Partager