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

Python Discussion :

Interface graphique tkinter


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2023
    Messages : 3
    Par défaut Interface graphique tkinter
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    from tkinter import Tk, Label, Button, Radiobutton, StringVar # On importe certaines fonctions depuis Tkinter
    from time import time #On importe "l'heure"
    import random #On importe la fonction aléatoire
     
     
    tentatives=15 #On initialise le max de tentatives
     
    prix = random.randint(1, 500) # On dit entre quel nombre on veut que ça prenne
     
    score = 0 #On initalise le score
     
    tentatives=0 # On initialise les tentatives
     
     
     
    #****************************
    #****Codage des fonctions****
    #****************************
     
     
     
     
    #Fonction partie
     
    def partie():
        debut = time()  #Initialise l'heure de début
        tentatives=0 #Met le nombre d'essais à 0
        score =0 #Initialise le score
        print("Devinez le juste prix ! Le prix est un nombre entre 1 et 500 inclus. Les informations seront de la console python.Appuyez sur entrer pour confirmer ")#Affiche un message dans la fenetre Python input
        try: #Si la reponse donnée fait partie du type de réponse attendue
            while True:  #Si la valeur saisie est corecte
                nombre = int(input()) #Définir le nombre
                tentatives += 1 #On ajoute une tentative à chaque fois que l'on passe dans la boucle
                if nombre < prix: #Si trop bas
                    print("Le juste prix est plus haut")
                if nombre > prix: #Si trop haut
                    print("Le juste prix est plus bas")
                if nombre == prix: #Si t'as bon
                    score = score + 1 #On ajoute 1 à la variable score
                    print(f"Félicitations, vous avez trouvé le juste prix {prix} , en {tentatives} essais , votre score est de {score} , vous avez mis {temps} secondes !")
                    break #On coupe le programme
                if tentatives == 15:#Si on a fait 15 tentatives
                    print (f"Perdu le juste prix était {prix} ! Votre score est de {score} , vous avez mis {temps} secondes .")
                    break # On coupe le programme
                temps = time()- debut #On soustrait l'heure de départ à l'heure qu'il est
                if temps > 20: #Si c'est suprérieur à 20 secondes on coupe le programme
                    print (f"Trop long , le juste prix était {prix} ! Votre score est de {score}.")
                    break #On le coupe
     
     
     
            print("Partie terminée")
        except: #Si la reponse donnée ne fait pas partie du type de reponse attendue
            continuer()#Appel la fonction continuer
     
    #La fonction pour continuer
     
    def continuer():
        reponse = input ("Voulez-vous continuer ?") #Pose une question input pour demander si la personne veut continuer ou pas
        if reponse == 'oui' : #Si la perssonne répond oui alors...
            partie()#Appel de la fonction partie
        else: # Si la personne répond autre chose que oui alors...
            confirmations()#Appel de la fonction confirmation
     
     
    #La fonction qui nous sert à confirmer notre choix
     
     
    def confirmations():
     
        reponse = input ('Êtes vous sûr de vouloir quitter le programme ? Répondez par oui ou non. Si vous repondez autre chose le programme se fermera.')#Pose une question input pour demander si la personne est certaine de son choix ou pas
     
        if reponse == 'oui' :#Si la perssonne répond oui alors...
            quitter()#Appel de la fonction quitter
        if reponse == 'non':#Si la perssonne répond non alors...
            partie()#Appel de la fonction partie
     
     
     
     
     
     
     
    #Fonction quitter
     
     
    def quitter():
        print()
        print("************************************************")
        print("********* FIN du programme. A Bientôt **********")
        print("************************************************")
        print()
     
     
     
     
    #Fonction pour le bouton jouer
     
    def jouer():
        fen.destroy()#Ferme la fenetre tkinter
        partie()#Fait appel à ma fonction partie
     
     
     
    # ****************************************
    # *********** Partie Graphique ***********
    # ****************************************
    fen = Tk()                            #initialisation d'une  fenêtre graphique
     
    # Titre
    intro = Label(fen, text='Juste prix') #Genere le nom affiché sur la fenetre
    intro.config(font = "Impact 50", fg="Orange", bg="Black") #Genere la taille et la couleur du texte affiché
    intro.pack(pady=20)#Initialise l'espace entre la phrase et le hot de la page
     
    # Bouton joue
    bouton = Button(fen, text= "JOUER", padx= 10,pady=10, font = "Arial 20", bg="Orange", fg="Black", command= jouer)#Genere la taille, la couleur et la fonction du texte affiché dans le bouton
    bouton.pack(pady=20)#Genere l'espacement entre le bouton et le texte du haut
     
     
    # Bouton quitter
    bouton_quitter = Button(fen, text="QUITTER", font = "Arial 20", bg="Orange", fg="Black", command=fen.destroy)#Genere la taille, la couleur et la fonction du texte affiché dans le bouton
    bouton_quitter.pack(pady=20)#Genere l'espacement entre le bouton actuelle et le bouton d'en haut
     
    #texte representatif
     
    info = Label (fen, text='Dans ce jeu vous allez devoir trouver un nombre entre 1 et 500 compris. Vous allez disposer de 20 secondes ') #Genere le nom affiché sur la fenetre
    info.config(font= "Arial 20", fg ="Orange", bg="Black")
    info.pack(pady=30)
    info = Label (fen, text='  et 15 tentatives si vous échouez votre score sera de 0 mais si vous  réussissez votre score sera de 1.') #Genere le nom affiché sur la fenetre
    info.config(font= "Arial 20", fg ="Orange", bg="Black")
    info.pack(pady=30)
    info = Label (fen, text='Toutes les informations seront données dans la console python. Bonne chance à vous !  ') #Genere le nom affiché sur la fenetre
    info.config(font= "Arial 20", fg ="Orange", bg="Black")
    info.pack(pady=30)
     
     
    # Configuration générale de la fenêtre
    fen.config(bg = "Black")             # Couleur du fond de la fenêtre
    fen.title("Programme")                # Titre de la fenêtre
    fen.geometry("1920x1080")               # Taille de la fenêtre
    fen.mainloop()                       # Création de la d'affichage

    Voici mon programme python et je souhaiterais savoir comment je pourrais changer l'arrière plan de ma fenêtre qui est actuellement défini par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fen.config(bg = "Black")
    à la place je souhaiterais mettre un gif (animé)
    Merci d'avance.

    J'essaye de détailler un maximum car j'ai énormément galérer et je me dis que ça peux aider des gens.

    Cette partie du code est un copier coller que j'ai indenté et annoté pour le comprendre et le mettre dans un fonction:

    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
    22
    23
    24
    25
    26
    27
    debut = time()  #Initialise l'heure de début
        tentatives=0 #Met le nombre d'essais à 0
        score =0 #Initialise le score
        print("Devinez le juste prix ! Le prix est un nombre entre 1 et 500 inclus. Les informations seront de la console python.Appuyez sur entrer pour confirmer ")#Affiche un message dans la fenetre Python input
        try: #Si la reponse donnée fait partie du type de réponse attendue
            while True:  #Si la valeur saisie est corecte
                nombre = int(input()) #Définir le nombre
                tentatives += 1 #On ajoute une tentative à chaque fois que l'on passe dans la boucle
                if nombre < prix: #Si trop bas
                    print("Le juste prix est plus haut")
                if nombre > prix: #Si trop haut
                    print("Le juste prix est plus bas")
                if nombre == prix: #Si t'as bon
                    score = score + 1 #On ajoute 1 à la variable score
                    print(f"Félicitations, vous avez trouvé le juste prix {prix} , en {tentatives} essais , votre score est de {score} , vous avez mis {temps} secondes !")
                    break #On coupe le programme
                if tentatives == 15:#Si on a fait 15 tentatives
                    print (f"Perdu le juste prix était {prix} ! Votre score est de {score} , vous avez mis {temps} secondes .")
                    break # On coupe le programme
                temps = time()- debut #On soustrait l'heure de départ à l'heure qu'il est
                if temps > 20: #Si c'est suprérieur à 20 secondes on coupe le programme
                    print (f"Trop long , le juste prix était {prix} ! Votre score est de {score}.")
                    break #On le coupe
     
     
     
            print("Partie terminée")

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 217
    Par défaut
    Hello,
    on peut mettre un gif dans un canvas mais il ne sera pas animé :
    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 Tk, PhotoImage, Canvas
     
    class Interface(Tk):
        def __init__(self, path_image):
            super(Interface, self).__init__()
            self.image = PhotoImage(file=path_image)
            self.w, self.h = self.image.width(), self.image.height()
            self.canvas = Canvas(self, width=self.w, height=self.h)
            self.canvas.pack()
            self.canvas.create_image((self.w // 2, self.h // 2), image=self.image)
     
            self.mainloop()
     
    Interface('d:/temp/good.gif')
    Nom : TkCanvas.png
Affichages : 240
Taille : 18,2 Ko

    gif animé :
    Nom : good.gif
Affichages : 228
Taille : 18,1 Ko

    Ami calmant, J.P

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Zolak.exe Voir le message
    Voici mon programme python et je souhaiterais savoir comment je pourrais changer l'arrière plan de ma fenêtre qui est actuellement défini par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fen.config(bg = "Black")
    à la place je souhaiterais mettre un gif (animé)
    Un peu de recherche sur Internet vous donnerait des exemples comme celui-ci

    Citation Envoyé par Zolak.exe Voir le message
    J'essaye de détailler un maximum car j'ai énormément galérer et je me dis que ça peux aider des gens.
    Le premier utilisateur des commentaires que vous avez mis dans le code sera vous: s'ils vous aident à comprendre le code que vous avez écrit c'est "pas mal"... mais apprendre à programmer avec Python c'est lire directement le code (pas les commentaires...) car Python est un langage de heut niveau (contrairement à l'assembleur qui méritera souvent une ligne de commentaire par instruction).

    Pour aider les gens, il y a déjà des tutos et Internet...

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

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut !

    De base, n'étant pas fan des annotations, là je suis servi !

    C'est assez simple de récupérer toutes les images d'un gif puis les afficher à tour de rôle, comme dit Wiz, Google est ton ami. Tu tapes gif tkinter, premier lien, bingo !

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 217
    Par défaut
    Hello,
    Citation Envoyé par LeNarvalo Voir le message
    C'est assez simple de récupérer toutes les images d'un gif puis les afficher à tour de rôle, comme dit Wiz, Google est ton ami. Tu tapes gif tkinter, premier lien, bingo !
    le souci c'est que cela rajoute du traitement et je ne pense pas que le but principal de l'application c'est d'afficher le gif animé. Et avoir un gif animé en permanence ça peut devenir vite lassant.
    Ami calmant, J.P

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si ça nécessite bcp de ressources d'afficher des images dans un thread différent géré par tkinter.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Je ne sais pas si ça nécessite bcp de ressources d'afficher des images dans un thread différent géré par tkinter.
    tkinter est une bibliothèque évènementielle... Un timer qui pète toutes les x ms. pour mettre à jour une image est un évènement comme un autre que tkinter sait gérer et propose même une interface via .after, .after_idle, .after_cancel,...

    Après côté ressources, les interfaces graphiques sont généralement gourmandes en mémoire et en CPU (comparé à un simple terminal 24 x 80 caractères).... mais si le PO a envie d'avoir une animation en fond d'écran, c'est son application et s'il a envie de faire autre chose parce qu'à l'usage ce n'est pas si "chouette"...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/12/2018, 12h30
  2. [Python 3.X] Client Socket avec interface graphique Tkinter
    Par mohan dans le forum Tkinter
    Réponses: 4
    Dernier message: 19/07/2016, 12h48
  3. [Python 3.X] Client Socket avec interface graphique Tkinter
    Par mohan dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 17/07/2016, 16h38
  4. Problème avec mon interface graphique Tkinter
    Par SamirIV dans le forum Tkinter
    Réponses: 0
    Dernier message: 09/05/2014, 21h08
  5. Réponses: 4
    Dernier message: 02/05/2014, 20h23

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