RE : Problème d'entry(décidement)

Résolu
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour. Me revoila devant un probleme d'entry. Je poste quand meme une nouvelle discussion car ce n'est pas la meme chose.

from tkinter import *
PCHIFParametres = Tk()



def PCHIFoGetColor1(event):
    PCHIColor1 = PCHIEColor1.get()
    print(PCHIColor1)

PCHIEColor1 = Entry(PCHIFParametres, width=30)
PCHIEColor1.pack()
PCHIFParametres.bind('<Return>', PCHIFoGetColor1)


PCHIFParametres.mainloop()

Ceci marche

def PCHIFoParametres():


    PCHIFParametres = Tk()
    PCHIFParametres.title("PCHI ")
    PCHIFParametres.resizable(0, 0)
    PCHIFParametres.config(bg=PCHIColor1)
    PCHIFParametres.geometry("400x200+200+200")

    def PCHIFoGetColor1(event):
        PCHIColor1 = PCHIEColor1.get()
        print(PCHIColor1)

    def PCHIFoGetColor2(event):
        PCHIColor2 = PCHIEColor2.get()
        print(PCHIColor2)

    def PCHIFoGetPolice(event):
        PCHIPolice = PCHIEPolice.get()
        print(PCHIPolice)

    PCHIEColor1 = Entry(PCHIFParametres, width=30)
    PCHIEColor1.pack()

    PCHIEColor2 = Entry(PCHIFParametres, width=30)
    PCHIEColor2.pack()

    PCHIEPolice = Entry(PCHIFParametres, width=30)
    PCHIEPolice.pack()

    PCHIFParametres.bind('<Return>', PCHIFoGetColor1)
    PCHIFParametres.bind('<Return>', PCHIFoGetColor2)
    PCHIFParametres.bind('<Return>', PCHIFoGetPolice)

    PCHIFParametres.mainloop()

Ca non.

Pouvez vous m'aider. Merci


3 réponses

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bonsoir,

Je vois la définition d'une fonction PCHIFoParametres()

mais elle n'est jamais appelée, donc il ne se passe rien...

Sinon,  PCHIEColor1 est l'identifiant d'une Entry, et tu essaies de t'en servir comme d'une couleur:

PCHIFParametres.config(bg=PCHIColor1)

Et ça, ce n'est pas très beau:

PCHIColor1 = PCHIEColor1.get()

tu écrases le nom de l'entry avec son contenu !

J'ajoute qu'avec les 3 bind à la fin, en appuyant sur Return, tu lances les 3 fonctions à la fois !

Décidément, Il faut vraiment que tu revoies les bases ...

0
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

Ok désolé. J'ai effectivement oublié d'appeler la fonction. Désolé aussi pour le problème de bind... :(

0
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

La couleur est PCHIColor1 et pas PCHIEColor1.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

décidément, tu ne te fatigues pas!  prends le temps de nous expliquer ce qui ne marche pas dans ton second code.  Surtout, prends le temps d'expliquer comment tu le testes.  Teste le mieux, en mettant du texte dans PCHIEPolice, et tu constateras qu'il fonctionne partiellement.

0
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

D'accord désolé. Justement, je ne sais pas ce qui ne marche pas. J'ai testé Color1 et Color2 mais pas Police...

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

Ca ne te parait pas évident que si tu bind la fenêtre principale (PCHIFParametres) à Return, 

en appuyant sur Return, ca va lancer les 3 fonctions en même temps ?

(d'où le problème)

0
hufy
 

Bonsoir,

Comme signalé, tu ne peux écraser les events ainsi, on peut toutefois le faire en utilisant le paramètre add, mais ce n'est pas ce que tu veux dans ton script.

Tu dois relier tes bind à chacun de tes entry.

Donc de ça

PCHIFParametres.bind('<Return>', PCHIFoGetColor1)
PCHIFParametres.bind('<Return>', PCHIFoGetColor2)
PCHIFParametres.bind('<Return>', PCHIFoGetPolice)

à

PCHIEColor1.bind('<Return>', PCHIFoGetColor1)
PCHIEColor2.bind('<Return>', PCHIFoGetColor2)
PCHIEPolice.bind('<Return>', PCHIFoGetPolice)

Tu devrais aussi utiliser des noms de variables plus distinctes et moins enclines à des erreurs et confusions de noms.

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

C'est vrai qu'entre PCHIColor1, PCHIEColor1 la différence ne saute pas immédiatement aux yeux ...

0
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   > Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention  
 

Oui désolé. Mais je suis "obligé" d'utiliser des noms compliqués car d'une part, afin de ne pas confondre les variables crées par l'utilisateur et les variables systèmes, je nomme les variables systèmes avec PCHI devant. Ensuite, pour m'y retrouver (cela correspond à ma logique) je leur donne un type (Fo pour fonction, F pour fenêtre, B pour bouton,ect...). Désolé pour la difficulté de lecture de mes codes qui en résulte...

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

obligé, obligé, faut voir ...

C'est quoi une variable système ?

PCHIFoGetColor2 est une fonction
PCHIEColor1 est un nom d'entry

pourquoi PCHIE ?

J'ai déjà vu des tas de codes professionnels et ils sont plus beau que ça...

0
Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   > Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention  
 

Une variable système, c'est une variable utilisée par le logiciel. PCHIE = PCHI(variable système)+E(Entry).

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > Pr.Witherfire Messages postés 79 Date d'inscription   Statut Membre Dernière intervention  
 

tu te complique ben l'existence mon gars :-)

0