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 :

créer un diaporama de couleur de fond


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut créer un diaporama de couleur de fond
    Bonjour,

    J'achève la lecture de Python pour les kids et parcours le livre de Gérard Swinnen et je cherche des réponses sur le net...la fatigue sans doute mais vous allez m'éclairez.

    Voici quelques essais parmi de nombreux que je fais pour créer un programme qui change la couleur de tk ou du canevas qui est dessus ( c'est bien ça ?) :

    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
    20
    21
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
     
    from tkinter import *
    import random
    import time
    tk=Tk()
    couleurs=["red", "yellow","pink","white","green","purple", "orange", "cyan", "magenta"]
    couleur = random.choice(couleurs)
    canvas=Canvas(tk, width=400,height=400, bg=couleur)
    canvas.pack()
    tk.update()
     
    class change_fond:
        def change(self):
            while couleur == True:
                self.canvas= canvas
                time.sleep(0.5)
                tk.update()
    change_fond()
    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
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    import time
    import random
    tk = Tk()
     
    couleurs = ["red","pink", "yellow", "pink", "purple", "blue", "magenta", "cyan", "orange"]
    c = random.choice(couleurs)
     
    for x in range(0,10):
        canvas = Canvas (tk, width = 400, height = 400, bg=c)
        tk.mainloop()
        tk.destroy()
        canvas.pack()
        x=x+1
    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
    20
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
     
    from tkinter import *
    import random
    import time
    tk=Tk()
    couleurs=["red", "yellow","pink","white","green","purple", "orange"]
    couleur = random.choice(couleurs)
    canvas=Canvas(tk, width=400,height=400, bg=couleur)
    canvas.pack()
    tk.update()
     
     
    for x in range(0,10):
        tk.update_idletasks()
        tk.update()
        time.sleep(0.01)
        x=x+1

    Mais là je cale

    Merci de votre aide !!

    Nico

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

    Pour changer les attributs (la couleur) d'un widget existant (Canvas ou autre), la méthode à lui appliquer sera .configure (ici .configure(bg=color)).
    Côté code, çà pourrait s'écrire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from tkinter import Canvas
    import random
    import time
     
    couleurs=["red", "yellow","pink","white","green","purple", "orange", "cyan", "magenta"]
     
    canvas=Canvas( width=400,height=400)
    canvas.pack()
     
    for _ in range(10):
        couleur = random.choice(couleurs)
        canvas.configure(bg=couleur)
        canvas.update()
        time.sleep(0.5)
    Mais utiliser .update est une programmation avancée de tkinter qui n'est pas sans poser soucis si vous le généraliser un peu n'importe comment. Normalement après avoir appris les bases dans vos tutos, vous devriez savoir l'écrire ainsi:
    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
    from tkinter import Canvas
    import random
     
    couleurs=["red", "yellow","pink","white","green","purple", "orange", "cyan", "magenta"]
     
    canvas=Canvas( width=400,height=400)
    canvas.pack()
     
    def do_change_color(n):
        if n <= 0:
            return
        couleur = random.choice(couleurs)
        canvas.configure(bg=couleur)
        canvas.after(500, do_change_color, n-1)
     
    do_change_color(10)
    canvas.mainloop()
    i.e. une application GUI se lance et attend les évènements (en entrant dans .mainloop) l'évènement étant ici déclenché par .after qui crée une animation (changer la couleur...).

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Bonjour et d'abord merci !

    Quelques questions pour comprendre votre 2ème code:
    D'ordinaire je vois apparaître un objet de Tk() par exemple tk=Tk() ou encore fenetre = Tk() en plus de l'objet de Canvas() par exemple canvas=Canvas()
    Or vous créez uniquement un objet Canvas() ... Quelle différence entre ces deux objets car ce que je comprends c'est que ce sont 2 fenêtres, non ??

    Vous est il possible commenter la suite: je ne comprends pas à quoi sert la condition (if n <=o) et les paramètres de la fonction .after (canvas.after(500, do_change_color, n-1)

    Ensuite vous passez la valeur 10 en paramètre de la fonction: j'avoue que je ne pige pas ces valeurs numériques . Je me renseigne mais si vous pouvez m'éclairer ..

    Encore merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par calixtus06 Voir le message
    Quelle différence entre ces deux objets car ce que je comprends c'est que ce sont 2 fenêtres, non ??
    Il n'y en a pas. tkinter le fait par défaut à la création du premier widget.

    Citation Envoyé par calixtus06 Voir le message
    Vous est il possible commenter la suite: je ne comprends pas à quoi sert la condition (if n <=o) et les paramètres de la fonction .after (canvas.after(500, do_change_color, n-1)
    a s'arrêter au bout de 10 "itérations".
    Pour la fonction/méthode .after, il faut commencer par ouvrir votre documentation préférée sur tkinter (after) après avoir pris le temps de comprendre comment l'utiliser avec tkinter (après avoir potassé le chapitre qui va bien de votre tuto. favori).
    Personnellement, je me refuse d'essayer d'expliquer ce que vous n'avez pas encore cherché à comprendre par vous même en utilisant les ressources qui sont déjà à votre disposition.

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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Un grand merci pour les liens . En fait c'est un gros problème pour moi c'est de savoir vers quelle doc se tourner . Je privilégie les échanges mais je comprends et respecte ta position.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2018, 09h40
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08
  4. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37
  5. DirectDraw: Créer des surfaces 256 couleurs
    Par Magus (Dave) dans le forum DirectX
    Réponses: 5
    Dernier message: 14/10/2002, 22h28

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