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 :

Texte variable tkinter


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Texte variable tkinter
    Bonjour, bonsoir.

    Je me suis mis récemment à python et j'ai voulu commencer mon 1er projet en faisant un jeu, un peu comme le juste prix. (Prix choisi aléatoire et c'est au joueur de le trouver).
    Mon problème est que je voudrais mettre un message pour dire si le joueur est en bas du prix ou en haut.
    Le problème est j'ai plusieurs messages d'erreurs dont je n'arrive pas à régler. Voici les erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Akyso\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
        return self.func(*args)
      File "B:\test code python\Script.py", line 13, in retrieve_input__good_price
        position_price.set("Le prix est plus bas.")
    AttributeError: 'Label' object has no attribute 'set'
    Et voici mon code :

    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
    from tkinter import *
    from random import randint
     
     
    def retrieve_input__good_price ():
    	global just_price
    	input_value = input_nombre.get ()
    	input_value =  int(input_value)
    	if input_value != just_price :
    		if input_value  > just_price :
    			position_price.set("Le prix est plus haut.")
    		else:
    			position_price.set("Le prix est plus bas.")
    	else:
    		position_price.set("Vous avez le bon prix, félicitations !")
    	print(position_price)
     
     
     
    #Création fenetre
    window = Tk()
    window.title("Le juste prix")
    window.geometry ("1080x720")
    window.minsize(720, 480)
    window.iconbitmap("image/Logo_juste_prix.ico")
    window.config(bg="#38A4CC")
     
    #Génération du nombre aléatoire
    just_price = randint(1,1000)
    just_price = int(just_price)
     
    #Titre
    title = Label(window,bg="#38A4CC", font=("Arial", 40), text="Le juste prix !",fg="white")
    title.pack(pady=40)
     
    #Conteneur
    frame = Frame (window, background="#38A4CC")
     
    #Sous conteneur texte
    sub_frame = Frame(frame,bg="#38A4CC")
    sub_frame.grid(row=0, column=0, sticky=W)
     
    #Titre du conteneur
    sub_title = Label (sub_frame, text="Entrez un nombre entre 1 et 1000. ", bg="#38A4CC",font=("Arial", 25),fg="white")
    sub_title.pack()
     
    #Zone d'entré/input
    input_nombre = Entry (sub_frame,bg="#38A4CC",font=("Arial", 20),fg="white")
    input_nombre.pack(pady=20, fill=X)
     
    #Position par rapport au prix
    position_price = StringVar("")
    position_price.set("Donnez un nombre avant de savoir si vous avez gagnez")
    position_price = Label(sub_frame,bg="#38A4CC", font=("Arial", 15), textvariable=position_price,fg="white")
    position_price.pack(pady=10)
     
    #Bouton validé
    button = Button (sub_frame, text="Valider", font=("Arial", 25),fg="#38A4CC",bg="white",command=retrieve_input__good_price)
    button.pack(pady=20, fill=X)
     
    #Image
    width = 500
    height = 464
    image = PhotoImage(file="image/Logo_juste_prix.png")
    canvas = Canvas(frame,bg="#38A4CC",width=width,height=height,bd=0,highlightthickness=0)
    canvas.create_image(width/2,height/2,image=image)
    canvas.grid(row=0, column=1, sticky=W)
     
     
     
     
     
    frame.pack(expand=YES)
     
    window.mainloop()
    Voila si vous avez une idée je suis preneur,
    Merci d'avance ^^

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

    Il faut apprendre à lire les indications données dans le message d'erreur.
    Si çà dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        position_price.set("Le prix est plus bas.")
    AttributeError: 'Label' object has no attribute 'set'
    est-il "normal"/attendu que position_price soit un Label?

    Puis allez voir ou vous avez défini/assigné cette variable.
    Du côté de la ligne 51, on trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Position par rapport au prix
    position_price = StringVar("")
    position_price.set("Donnez un nombre avant de savoir si vous avez gagnez")
    position_price = Label(sub_frame,bg="#38A4CC", font=("Arial", 15), textvariable=position_price,fg="white")
    position_price.pack(pady=10)
    Vous êtes donc parti avec position_price assigné à un StringVar(""), puis c'est devenu un Label: un objet à qui on ne peut pas appliquer la méthode .set (contrairement au StringVar qu'il était).

    Vous voyez comprendre d'où vient l'erreur n'est pas un travail monstrueux: il suffit de relire le code (que vous avez écrit).
    A vous de la corriger.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    D'accord merci,
    Voila ce que j'ai fait et ca marche. Cependant je voudrais savoir si vous auriez fait autrement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    position_price = StringVar("")
    position_pricet = StringVar("")
    position_pricet.set("Donnez un nombre avant de savoir si vous avez gagnez")
    position_price = position_pricet
    position_pricet = Label(sub_frame,bg="#38A4CC", font=("Arial", 15), textvariable=position_pricet,fg="white")
    position_pricet.pack(pady=10)
    Sinon encore merci je n'avais pas compris ca en lisant l'erreur

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    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 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Citation Envoyé par Akyso_ Voir le message
    Cependant je voudrais savoir si vous auriez fait autrement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    position_price = StringVar("")
    position_pricet = StringVar("")
    position_pricet.set("Donnez un nombre avant de savoir si vous avez gagnez")
    position_price = position_pricet
    position_pricet = Label(sub_frame,bg="#38A4CC", font=("Arial", 15), textvariable=position_pricet,fg="white")
    position_pricet.pack(pady=10)
    Pour créer 2 objets et les assigner à 2 variables distinctes, il y a bien plus simple.
    Mais prendre le temps de relire votre code et vous demandez si tout cela est bien utile est une sorte de rigueur que vous apprendrez petit à petit.

    - W

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

Discussions similaires

  1. MonFieldSet.Text => Variable globale?
    Par k o D dans le forum ASP.NET
    Réponses: 5
    Dernier message: 02/01/2008, 16h11
  2. Réponses: 6
    Dernier message: 14/03/2007, 15h36
  3. texte variable (affichage de score) sous sdl_ttf
    Par kamouminator dans le forum SDL
    Réponses: 4
    Dernier message: 30/09/2006, 11h48
  4. [HTML][Débutante]Couleur de texte variable
    Par master56 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/10/2005, 16h04
  5. Réponses: 2
    Dernier message: 16/12/2004, 16h33

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