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 :

Variable dans une fenêtre Tkinter


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 7
    Par défaut Variable dans une fenêtre Tkinter
    Bonjour à tous, j'ai besoin de votre aide pour finaliser mon projet d'isn (ou plutôt le réaliser).
    Voilà, mon but est de réaliser un programme réalisant un tableau à la Dubuffet.
    Mis à part la tache graphique, ma tache personelle est de faire l'interface graphique, où l'utilisateur fera son travail d'artiste. Mais comme Tkinter répète en boucle mon programme, je ne sais pas comment initialiser une variable, car si je mets par exemple

    Variable = 1
    Variable = variable + 1

    à la fin du programme, elle se réinitialise. Du coup j'en appelle à vous, car mes enseignants ont beau tenter de m'expliquer, ils ont eux-même du mal à réaliser cette tache. J'espère avoir réussi à bien expliquer mon problème. Voici mon code actuel, mais il est extrêmement variable car je ne trouve pas de solution.
    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
     
    from tkinter import *
    from tkinter.filedialog import *
    import os
     
     
     
    def chemin():
        filepath = askopenfilename(title="Ouvrir une image",filetypes=[('png files','.png'),('all files','.*')])
    def afficher():
        canvas = Canvas(width=photo.width(), height=photo.height(), bg="blue")
        canvas.create_image(10,10, anchor=NW, image=photo)
        canvas.pack()
     
    fen=Tk()
    open = Button(fen,text ="ouvrir une image", command = afficher)
    filepath=chemin()
    photo = PhotoImage(file=filepath)
    open.pack()
    fen.mainloop()
    Merci d'avance pour votre aide!

  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 wazo_qui_vole Voir le message
    Mais comme Tkinter répète en boucle mon programme, je ne sais pas comment initialiser une variable, car si je mets par exemple

    Variable = 1
    Variable = variable + 1

    à la fin du programme, elle se réinitialise.
    A la fin du programme tout sera détruit sauf à sauvegarder des données dans un fichier externe. Maintenant, ce que vous voulez faire n'est peut être pas çà, d'autant que votre code ne contient pas la fameuse "Variable".

    - 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
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 7
    Par défaut
    Tout d'abord, merci de votre réponse,mais quand vous parlez d'à la fin du programme, c'est quand on ferme la fernêtre? Je ne parle pas de ça, mais par exemple, j'aimerais savoir comment afficher un tout simple compteur de clics. Si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from tkinter import *
    def add():
         count  = count +1
    count=1
    fen=Tk()
    Label(fen,text=count).pack()
    open = Button(fen,text ="ouvrir une image", command = add)
    open.pack
    fen.mainloop()
    la variable count se réinitialisera a chaque instant, puisque que mainloop réitère le programme tant que la fenêtre existera. Et donc cela n'affichera en permanence "1". (et en plus la il y a un problème d'assignement je comprends pas ça m'énerve )

  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 wazo_qui_vole Voir le message
    Si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from tkinter import *
    def add():
         count  = count +1
    count=1
    fen=Tk()
    Label(fen,text=count).pack()
    open = Button(fen,text ="ouvrir une image", command = add)
    open.pack
    fen.mainloop()
    Déjà, votre programme n'affiche pas le Button. Cela corrigé çà plante avec un message d'erreur que vous devriez reconnaître car on ne débute pas sur Python en se lançant sur tkinter.


    Citation Envoyé par wazo_qui_vole Voir le message
    la variable count se réinitialisera a chaque instant, puisque que mainloop réitère le programme tant que la fenêtre existera.
    .mainloop attend juste qu'un évènement déclenche une action qui se traduira par l'appel d'une fonction qui pourra modifier l'état des variables globales et mettre à jour l'affichage si nécessaire (ici le Label).

    Citation Envoyé par wazo_qui_vole Voir le message
    Et donc cela n'affichera en permanence "1". (et en plus la il y a un problème d'assignement je comprends pas ça m'énerve )
    La portée des variables, variable locales, globales,... sont des notions importantes si vous ne les maîtrisez pas, il faut prendre le temps d'apprendre sinon vous allez être vite perdu et ne saurez pas que faire.

    Sinon avec tkinter, on va pouvoir écrire cela ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import tkinter as tk
     
    root = tk.Tk()
    var = tk.IntVar()
    tk.Label(root, textvariable=var).pack()
    tk.Button(text='clic', command=lambda: var.set(var.get()+1)).pack()
    tk.mainloop()
    et les explications se trouvent dans les tutos (que vous êtes supposé avoir potassé avant de poster).

    - 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
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 7
    Par défaut
    Bonjour, merci de m'avoir aidé, et oui j'ai potassé et je ne suis pas (en tout cas pas censé être) un débutant, mais c'est mon premier programme sur Tkinter, et j'avoue que le fonctionnement de cette librairie me travaille un peu. Merci d'avoir répondu, je vais essayer de me servir de ça pour mon programme, mon prof avait évoqué lambda juste avant de finir le cours, mais je n'avais pas réussi à comprendre la différence entre "lambda: xxx" et "def truc ():" merci!

  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
    Citation Envoyé par wazo_qui_vole Voir le message
    je vais essayer de me servir de ça pour mon programme, mon prof avait évoqué lambda juste avant de finir le cours, mais je n'avais pas réussi à comprendre la différence entre "lambda: xxx" et "def truc ():" merci!
    Dans le cas particulier "lambda" est juste là pour ne pas definir une fonction. On pourrait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def do_clic():
        var.set(var.get()+1)
     
    root = tk.Tk()
    var = tk.IntVar()
    tk.Label(root, textvariable=var).pack()
    tk.Button(root, text='clic', command=do_clic).pack()
    tk.mainloop()
    Si vous voulez en savoir plus, vous avez un bon tuto ici.

    Et si vous étiez moins débutant vous auriez pu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def do_clic():
        global counter
        counter += 1
        label['text'] = counter
     
     
    root = tk.Tk()
    counter = 0
    label = tk.Label(root, text=counter)
    label.pack()
    tk.Button(text='clic', command=do_clic).pack()
    tk.mainloop()
    Citation Envoyé par wazo_qui_vole Voir le message
    jet oui j'ai potassé et je ne suis pas (en tout cas pas censé être) un débutant, mais c'est mon premier programme sur Tkinter, et j'avoue que le fonctionnement de cette librairie me travaille un peu.
    C'est pour çà qu'on a écrit des tutos.

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

Discussions similaires

  1. Variable dans une fenêtre appellante
    Par Anduriel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/08/2012, 14h51
  2. Passage de variable dans une fenêtre modale
    Par arthuro45 dans le forum jQuery
    Réponses: 5
    Dernier message: 25/03/2011, 08h34
  3. Réponses: 5
    Dernier message: 18/06/2008, 09h50
  4. passage de variables dans une fenêtre popup
    Par Invité dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/04/2007, 09h59
  5. Affichage variable dans une fenêtre d'alerte
    Par undercrash dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/03/2006, 21h35

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