1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 5
    Points : 1
    Points
    1

    Par défaut Erreur X-Windows sur Tk::Drop

    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.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    18 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 18 938
    Points : 495 362
    Points
    495 362

    Par défaut

    Bonjour,

    Qu'est-ce que tu cherches concrètement à faire ?
    ton code ci-dessous ne fonctionne même pas sous Windows 10. Tu mélanges en plus des gestionnaires d'espace pack et place.
    Bref, donne nous ton code qui fonctionne sous Windows 7 et dis nous ce que tu cherches à faire.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Bonjour Djibril et merci de te pencher sur mon problème.

    Le code fourni fonctionne parfaitement sur ma machine sous Windows 7. Mon problème n'est pas dans l'utilisation de pack et place dans Tk.

    En fait, je cherche à inclure une fonction de drop d'un fichier dans une application Tk : l'appli est lancée et attend qu'on lui dépose (par drag and drop) un fichier situé sur le bureau de l'utilisateur. On récupère alors le nom du fichier et on le traite. Le code que j'ai fourni est un extrait fonctionnel de mon application qui ne concerne que la partie "drop".

    Comme je l'ai indiqué dans mon premier message, ce code fonctionne sous Windows (la fenêtre s'ouvre et je peux y déposer le fichier qui génère l'affichage de "DROP [nom du fichier]" dans la fenêtre DOS) mais génère une erreur qui fait planter l'appli sous Linux (j'ai indiqué le message d'erreur qui s'affiche dans la fenêtre de commande Linux).

    Mon objectif est d'avoir une application qui tourne avec le même code sur Windows et Linux (c'est pourquoi je teste le $^O pour déterminer l'OS sur lequel l'appli fonctionne) et qui ait les mêmes fonctionnalités sur les deux environnements.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    18 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 18 938
    Points : 495 362
    Points
    495 362

    Par défaut

    Je veux bien comprendre que ton code original fonctionne sous Windows mais comment veux-tu que l'on teste ou t'aide si ton programme que tu nous mets sur le forum (extraction) ne fonctionne pas ?
    Essaye de nous mettre un programme de drag and drop fonctionnel pour que l'on le teste sous Wndows et Linux pour voir ce qui ne va pas.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Le code ci-dessous fonctionne sur ma machine sous Windows 7 avec Strawberry PERL 5.22.0.

    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";
    }
    La preuve de l'exécution :
    Nom : PrtScr capture.jpg
Affichages : 29
Taille : 11,9 Ko

    Et le résultat obtenu dans la fenêtre DOS :
    Nom : PrtScr capture_3.jpg
Affichages : 29
Taille : 13,7 Ko

    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

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Personne pour m'aider ?

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    18 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 18 938
    Points : 495 362
    Points
    495 362

    Par défaut

    Bonsoir,

    Je viens de faire un test sur une machine Debian et j'ai la même erreur.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    18 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 18 938
    Points : 495 362
    Points
    495 362

    Par défaut

    Je ne trouve pas de solution pour ton problème. Sous Windows, il faut Win32 dans droptypes, sous Linux, il faut Sun ou XDND, mais cela ne fonctionne pas chez moi sous Debian.
    Une autre option est Local, mais c'est pour des drag and drop entre fenêtre Tk.

    Je te suggère de faire un ticket sur le module CPAN du module Tk. Slaven auteur du module te répondra surement.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Ok, merci du temps passé.

Discussions similaires

  1. gerer une erreur de script sur un DROP USER ou un REVOKE
    Par pcouas dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2010, 09h29
  2. Erreurs avec TNSping sur client Windows pour serveur Linux
    Par Soulghard dans le forum Administration
    Réponses: 3
    Dernier message: 01/07/2010, 16h08
  3. Erreur démarrage IIS7 sur windows 7 32bits
    Par Artylus dans le forum IIS
    Réponses: 0
    Dernier message: 21/02/2010, 20h46
  4. Erreur BDE Engine sur Windows Vista
    Par bsdocuments dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/06/2008, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo