IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tcl/Tk Discussion :

Portée des classes ou comment mixer TCL::oo et TK


Sujet :

Tcl/Tk

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Portée des classes ou comment mixer TCL::oo et TK
    Bonjour les TCLeux

    J'ai une question sur les "nouveaux" TCL::oo, pour ceux qui les ont déjà utilisés.

    Pourquoi lorsque je lance ce script ai-je une erreur "invalid command name "::oo::Obj52*printMess".
    Je pense que la portée de l'objet est trop faible et que lorsqu'il est dans la boucle d'évènement TK $monObjet et donc l'objet qu'il référence n'existe plus, mais comment faire dans ce cas pour mixer oo et TK ? Pour mettre ses commandes de widgets TK dans un objet ?

    Merci d'avance.

    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
    package require Tk
     
    oo::class create essaiWin {
    variable nomWin
    constructor {nom} {
    	set nomWin .essai
    	toplevel $nomWin
    	grid [button $nomWin.but -command [namespace code "[self]*printMess"] -text "Boutton"] -row 3 -column 0 -sticky ew
    }
     
     
    method printMess {} {
    	tk_messageBox -message "Appui sur le boutton"
    }
    }
     
    set monObjet [essaiWin new .essai]

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Bonsoir,

    Ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package require Tk
    oo::class create essaiWin {
      constructor {w} {
        toplevel $w
        grid [button $w.b -text "AAA" -command "[self] printMess"] -row 3 -column 0 -sticky ew
      }
     
      method printMess {} { 
       tk_messageBox -message "Appui sur le boutton" 
      } 
    }
     
    set monObjet [essaiWin new .w1]
    Ce qui laisse penser qu'il s'agit certainement d'une incompréhension de la syntaxe et de la sémantique de base du langage Tcl plutôt que d'un problème de POO.

    Suggestion : bien lire les 12 règles http://wfr.tcl.tk/1870

Discussions similaires

  1. [POO] Portée des variables de classe
    Par guidav dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2007, 19h27
  2. Réponses: 4
    Dernier message: 19/02/2006, 17h59
  3. Réponses: 2
    Dernier message: 01/02/2006, 15h02
  4. comment utilisé des classes toute prêtes
    Par Burinho dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 22h18
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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