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 :

Supprimer un widget en gardant son affichage


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Supprimer un widget en gardant son affichage
    Bonjour.

    J'ai développé un court programme python en utilisant tkinter. Mon but est de calculer une approximation de pi en utilisant la méthode de monté carlo. Pour que ce soit "visuel", j'affiche un carré dans une fenêtre et j'affiche des points au hasard dans ce carré (en utilisant create_oval()). Ca fonctionne très bien sauf que quand mon programme affiche plus de 10 000 points, il devient très lent...Je suppose que c'est parce que tous les points créés restent en mémoire alors que, pour le fonctionnement de mon programme, ce n'est pas utile.
    Ma question est donc : est-il possible de supprimer un widget (les points créés) mais en gardant l'affichage à l'écran ?
    Voici en image, une copie d'écran après un affichage de 22 000 points :
    Nom : Capture.JPG
Affichages : 144
Taille : 143,4 Ko

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Une idée serait: après avoir tracé N cercles, récupérer une image du Canvas, effacer les cercles, afficher l'image et recommencer avec les N cercles suivants.
    Le Canvas affiche alors au plus une image et N cercles.
    La où çà deviendra intéressant est s'il faut optimiser le remplacement des points par une image si l'opération ralenti un peu trop.
    note: çà se fait en faisant une copie de la région de l'écran occupée par le Canvas via le module PIL/Pillow (et vous avez des tas d'exemples ici ou sur Internet pour voir comment faire).

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci !
    J'ai modifié mon programme pour tenir compte de ton conseil et enregistrer une image tous les 3000 points placés.
    Maintenant mon programme est très rapide .
    Nom : Capture.JPG
Affichages : 122
Taille : 141,1 Ko

    Mais quand même, cela me semble assez lourd à programmer. Je suis surpris qu'il n'existe pas "nativement" dans Tkinter, quelque chose qui permet de supprimer un widget de la mémoire tout en gardant son affichage à l'écran...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par desmoitier Voir le message
    Mais quand même, cela me semble assez lourd à programmer. Je suis surpris qu'il n'existe pas "nativement" dans Tkinter, quelque chose qui permet de supprimer un widget de la mémoire tout en gardant son affichage à l'écran...
    Pour moi "assez lourd", c'est devoir passer des jours à écrire plusieurs centaines de lignes de code.
    Ici, çà ne dépasse pas 10/20 lignes de code, il ne faut quand même pas exagérer.

    Quelque soit l'interface graphique, un widget est un élément qu'on affiche ou pas et permettra d'interagir avec l'utilisateur.
    C'est beaucoup plus que changer l'état de quelques pixels sur un écran.
    Plutôt qu'utiliser tkinter, peut être qu'une bibliothèque graphique plus basique genre pygame aurait été plus pertinent.

    - W

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/10/2006, 12h36
  2. Pb avec mon site web et son affichage
    Par cyberdevelopment dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 10/08/2006, 16h03
  3. Réponses: 4
    Dernier message: 26/07/2006, 13h37
  4. [GRAPHIQUE] Agrandir son affichage
    Par Jahprend dans le forum IHM
    Réponses: 2
    Dernier message: 15/06/2006, 16h56
  5. Réponses: 12
    Dernier message: 14/07/2005, 16h55

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