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

Tkinter Python Discussion :

Fenêtre Tk et Toplevel


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 30
    Par défaut Fenêtre Tk et Toplevel
    Bonjour,
    J'aimerais comprendre la différence entre les fenêtres Tk et Toplevel.
    Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ? ou est-il préférable d'en faire une puis des Toplevel ?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    Tk est une fenêtre principale à créer pour que ton interface graphique soit fonctionnel, elle est donc obligatoire et présente (elle peut être rendu invisible)
    Toplevel est une fenêtre secondaire, qui est faîte pour ne surtout pas créer d'autres fenêtre principales

    Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ?
    Surtout pas, ça voudrait dire créer plusieurs boucles événementielles, ça serait très difficile à gérer.

    ou est-il préférable d'en faire une puis des Toplevel ?
    C'est fait pour !

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Salut,

    Si vous ouvrez la documentation, vous y trouveriez:

    class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=1)

    The Tk class is instantiated without arguments. This creates a toplevel widget of Tk which usually is the main window of an application. Each instance has its own associated Tcl interpreter.
    qui indique qu'une instance de Tk est plus qu'un simple Toplevel.

    Citation Envoyé par motomath Voir le message
    Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ?
    L'interpréteur TCL associé à Tk définit l'espace de noms (TCL) associé aux widgets qui sont créés.
    note: la documentation explique la correspondance entre widget tkinter et le nommage TCL associé.

    Si vous avez plusieurs instances de Tk, vous aurez autant d'espaces de noms disjoints: widgets, variables, image travaillant ensemble devront être explicitement créées dans le bon espace de noms.
    Comme, par défaut, tkinter va leur associer la première instance de Tk créée, çà cause de nombreux soucis au débutants.

    Citation Envoyé par motomath Voir le message
    ou est-il préférable d'en faire une puis des Toplevel ?
    absolument.

    Citation Envoyé par fred1599 Voir le message
    Citation Envoyé par motomath Voir le message
    Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ?
    Surtout pas, ça voudrait dire créer plusieurs boucles événementielles, ça serait très difficile à gérer.
    Ca c'est une légende urbaine: c'est pas parce qu'on à créé plusieurs Tk qu'on se retrouve avec plusieurs mainloop, il n'y en aura qu'une. C'est juste les espaces de nommages côté TCL qui sont différents (ce qui en rend l'usage difficile et inutile pour la plupart des applications).


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    Ca c'est une légende urbaine: c'est pas parce qu'on à créé plusieurs Tk qu'on se retrouve avec plusieurs mainloop, il n'y en aura qu'une. C'est juste les espaces de nommages côté TCL qui sont différents (ce qui en rend l'usage difficile et inutile pour la plupart des applications).
    Salut wiztrick,

    Attention de ne pas dire ce que je n'ai pas dis... J'ai dis que ça serait très difficile à gérer, ce qui implique sa faisabilité, cependant je ne le conseille pas, surtout pour un débutant et même pour un développeur confirmé, car je n'en vois pas vraiment le besoin conceptuel.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Attention de ne pas dire ce que je n'ai pas dis...
    Je me contente de lire:
    Citation Envoyé par fred1599 Voir le message
    Surtout pas, ça voudrait dire créer plusieurs boucles événementielles, ça serait très difficile à gérer.
    Il n'y a pas "plusieurs boucles évènementielles".
    Et si on veut se faciliter la vie, on peut appeler la fonction tkinter.NoDefaultRoot() pour forcer la précision du "master" (car c'est essentiellement ce qui fout la grouille).
    Pour avoir besoin d'utiliser ce genre de fonctionnalités, il faut, par exemple, utiliser le nommage des widgets (autre que le défaut). Si on doit à intégrer deux applications construites çà peut aider à éviter des collisions.
    Sûr que ce n'est pas le soucis du débutant qui peut se contenter de diviser le monde en fenêtre principales et secondaires.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 30
    Par défaut fenetre Tk et Toplevel [tkinter]
    Merci beaucoup pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Script qui ne s'exécute pas alors que la fenêtre Toplevel() est fermée
    Par darkslights dans le forum Général Python
    Réponses: 1
    Dernier message: 11/05/2018, 15h19
  2. [Python 3.X] [TopLevel] Probleme pour afficher les fenêtres !
    Par Sorarox dans le forum GUI
    Réponses: 4
    Dernier message: 01/04/2016, 19h21
  3. Réponses: 4
    Dernier message: 17/04/2015, 17h21
  4. Perte de focus sur fenêtre TopLevel
    Par Nainpoleon dans le forum Tkinter
    Réponses: 4
    Dernier message: 11/03/2013, 12h40
  5. fenêtre principale et Toplevels
    Par Chris33 dans le forum Tkinter
    Réponses: 2
    Dernier message: 07/11/2006, 08h48

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