Bonjour,

J'utilise Tk (version 804.033) avec PERL (version 5.18.2) sur Linux Mint.

J'ai une erreur lorsque j'exécute le code suivant qui fonctionne parfaitement quand je l'exécute sous Windows 7.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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";
}
Sous Linux, l'erreur est la suivante et l'application se ferme :

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
Les valeurs numériques changent à chaque exécution.

Un utilisateur de Linux pourrait-il essayer ce code et me dire si il fonctionne sur sa distrib ?

Et sinon, quelle peut être mon erreur d'utilisation de Tk ?

Merci d'avance.