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 :

Problème Tkinter affichage entry


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 24
    Par défaut Problème Tkinter affichage entry
    Bonjour, je suis assez nouveau sur Python et encore plus sur Tkinter... Mon but est de faire une interface graphique avec en fond une image de livre et où par dessus il y aurai une zone de texte qui récupère une chaîne de caractères pour vérifier si cette chaîne est un palindrome et si oui afficher un texte sur la fenêtre. Mon programme de vérification de palindrome est fonctionnel et l'interface graphique quasiment seulement je n'arrive pas à afficher La zone de texte sur la background de la fenêtre....

    Nom : 1572213906-capture.png
Affichages : 831
Taille : 622,9 Ko Voila ce que ça donne....


    Merci de votre aide...


    Voici mon programme :

    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
    from tkinter.messagebox import * # boîte de dialogue
    import tkinter as tk
     
    root = tk.Tk() #On initialise la fenetre
    root.title('Palindrome ?')#On nomme la fenetre
     
    image1 = tk.PhotoImage(file="Livre.png") #On initialise le fond d'écran
    w = image1.width()
    h = image1.height()
     
    root.geometry("%dx%d+0+0" % (w, h)) #On adapte la taille de la fenêtre à l'image
     
     
    Entree = tk.Entry(root)     # On définit l'objet Entry qui porte le nom Entree
    Entree.pack(side = 'left')               # On place "Entree"
     
     
    fond = tk.Label(root, image=image1)
    fond.pack()
     
     
    root.mainloop()
    Images attachées Images attachées  

  2. #2
    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 Armusclor Voir le message
    seulement je n'arrive pas à afficher La zone de texte sur la background de la fenêtre....
    .pack et .grid permettent de distribuer l'espace disponible de la "fenêtre" entre mes différents widgets. Si vous voulez placer un widget "au dessus", il va falloir utliser .place ou un Canvas.

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 24
    Par défaut
    merci de votre réponse rapide.
    J'ai essayé avec un .place mais maintenant je ne vois plus du tout l'entry...

    voici ce que j'ai essayé

    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
    from tkinter.messagebox import * # boîte de dialogue
    import tkinter as tk
     
    root = tk.Tk() #On initialise la fenetre
    root.title('Palindrome ?')#On nomme la fenetre
     
    image1 = tk.PhotoImage(file="Livre.png") #On initialise le fond d'écran
    w = image1.width()
    h = image1.height()
     
    root.geometry("%dx%d+0+0" % (w, h)) #On adapte la taille de la fenêtre à l'image
     
     
    Entree = tk.Entry(root)     # On définit l'objet Entry qui porte le nom Entree
    Entree.place()               # On place "Entree"
     
     
    fond = tk.Label(root, image=image1)
    fond.pack()
     
     
    root.mainloop()

  4. #4
    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 Armusclor Voir le message
    J'ai essayé avec un .place mais maintenant je ne vois plus du tout l'entry...
    "programmer", c'est comprendre ce qu'on fait...

    Si vous partez à utiliser .place et que çà ne fonctionne pas, il faut ouvrir une documentation qui explique comment çà marche et faire quelques essais pour voir si on a bien compris ce qu'elle raconte (et qu'on pourra s'en servir pour réaliser ce qu'on en attend).

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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 24
    Par défaut
    Merci pour votre réponse. J'ai pu avancer sur mon code mais je me retrouve face à un autre problème....


    Le texte entré dans l'entry ne passe pas les différentes fonctions qu'il devrait et au démarrage du programme la console affiche des résultats alors même qu'aucun texte n'a été rentré

    Voici le 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    from tkinter.messagebox import * # boîte de dialogue
    import tkinter as tk
     
     
    car = {                  # on ouvre un dictionnaire pour standardiser l'écriture de la chaine (supprimer les accents, les majuscules, la ponctuation et les escpaces)
                "à" : "a",
                "ä" : "a",
                "â" : "a",
                "ç" : "c",
                "é" : "e",
                "è" : "e",
                "ë" : "e",
                "ï" : "i",
                "ô" : "o",
                "ù" : "u",
                "ü" : "u",
                "û" : "u",
                " " : "",
                "-" : "",
                "," : "",
                "'" : "",
                "?" : "",
                "!" : "",
                "." : ""
        }
     
    #CRéation de la fenetre
    root = tk.Tk() #On initialise la fenetre
    root.title('Palindrome ?')#On nomme la fenetre
     
     
     
    palind = str(tk.StringVar())
     
     
    #Création de la fonction de remplacement des caracteres sepciaux
    def remplacement(x):
            x = x.lower()  # tout mettre en minuscule
            for caracInitial,caracFinal in car.items(): # permet de remplacer les caractère initials (avec accents,..) par leur équivalents (sans accents, sans majuscule,...)
                x = x.replace(caracInitial,caracFinal)
            return x
     
     
     
     
    #Creation de la fonction de detection
    def palindrome(x):
        for i in range(len(x)//2):  # on divise la longueur du caratère par 2,
            if x[i] != x[-i-1]: # on regarde si le caractère de rang i est différent du caractère de rang –i-1
                print("Ce n'est pas un palindrome")
        print("C'est un palindrome")
     
     
     
     
     
    #Creation de l'arriere plan et de la taille de la fenetee
    image1 = tk.PhotoImage(file="Livre.png")
    w = image1.width()
    h = image1.height()
    root.geometry("%dx%d+0+0" % (w, h))
    fond = tk.Label(root, image=image1)
    fond.pack()
     
     
     
     
    #Création de du champ de saisie
     
    Entree = tk.Entry(root, textvariable= palind)
    Entree.focus_set()
    Entree.place(x=363, y=470, anchor='w')
     
     
    x = remplacement(palind)
     
    #Creation du bouton de validation
    Bouton = tk.Button(root, text ='Valider', command = palindrome(x))
    Bouton.place(x=400, y=500, anchor='w')
     
     
     
     
    root.mainloop()

    Meme en reprenant tout à zéro je ne comprends pas le problème
    MErci de votre aide

  6. #6
    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 Armusclor Voir le message
    au démarrage du programme la console affiche des résultats alors même qu'aucun texte n'a été rentré
    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bouton = tk.Button(root, ..., command = palindrome(x))
    c'est le retour de l'appel à la fonction palindrome(x) qui est None qui sera passé comme command.

    Citation Envoyé par Armusclor Voir le message
    Le texte entré dans l'entry ne passe pas les différentes fonctions qu'il devrait
    Vu le code que vous avez écrit, ce n'est pas surprenant.

    Citation Envoyé par Armusclor Voir le message
    Meme en reprenant tout à zéro je ne comprends pas le problème
    S'il y avait seulement une petite erreur, je vous donnerai une piste ou même la solution. Votre truc est un champ de mines.

    Vous codez comme tout ceux qui, après avoir écrit un programme en mode console, veut le rendre plus flashy en utilisant une interface graphique.
    C'est une bonne idée, mais c'est un tout autre programme à écrire car çà ne fonctionne pas du tout pareil.
    Il va falloir passer un peu de temps par la case tuto.

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

Discussions similaires

  1. Demineur avec tkinter : problème d'affichage
    Par arcanis112 dans le forum Programmation multimédia/Jeux
    Réponses: 6
    Dernier message: 26/11/2018, 19h48
  2. Problème d'affichage simple avec grid() - tkinter
    Par Anonyme1784 dans le forum Général Python
    Réponses: 0
    Dernier message: 20/07/2017, 05h57
  3. Problème d'affichage d'images avec Tkinter
    Par flobos dans le forum Général Python
    Réponses: 3
    Dernier message: 14/03/2016, 16h35
  4. [Python 3.X] Problème d'affichage de label avec tkinter
    Par flobos dans le forum Général Python
    Réponses: 3
    Dernier message: 10/03/2016, 09h45
  5. problème d'affichage dune image avec Tkinter
    Par destroy51 dans le forum GUI
    Réponses: 14
    Dernier message: 29/03/2014, 13h40

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