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 :

Python et tkinter


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Par défaut Python et tkinter
    Bonjour,

    Grand débutant avec Python, je coince avec une question pratique.

    1. Mon objectif est de faire un tirage au sort dans une liste de nom. Lorsque j'effectue plusieurs tirages j'insère un mot tous les n tirage. Je définis la fréquence d'insertion par input. Tout fonctionne

    2. Eternel insatisfait, je me dit que j'aimerais bien avoir une version plus graphique en utilisant tkinter. Je rame un peu mais finalement j'arrive à créer une entrée, récupérer l'entrée et la convertir en int avec la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def frequence():
        n = frequence.get()
        showinfo('Info',n)
        a = int(n)
    Cette fonction est associée à entry et un bouton de validation qui lance la fonction. Si je ne me trompe pas n est un IntVar et a un Int

    3. Mon problème comment extraire et envoyer cet entier "a" au premier fichier python afin d'éviter de passer par input. En gros de façon générale, si j'ai une entrée via entry comment la réutiliser dans un autre fichier comme une simple variable int ?

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

    Pourquoi ne pas mettre tous dans le même script ?

    Sinon il faudra peut-être importer l'un ou l'autre des scripts comme un module.

    Ou alors passer par un système de transfert de données que je ne maitrise pas du tout (pipe, socket, ... ?) mais à mon avis on est plus dans le problème XY à ce stade...

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Par défaut
    Bonjour,

    Si je ne trouve rien, je vais probablement tout metter dans le même script car il n'est pas très long.

    Je voulais simplement quelque chose de plus propre mais aussi par curiosité car si mon script avait été plus long, ça aurait été compliqué de tout garder dans le même fichier.

    J'attends d'autres réponses au cas où, mais sinon, je ferai un seul script…qui risque au final d'être assez long car je l'étaye à chaque nouvelle idée.

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

    Citation Envoyé par Apoptose Voir le message
    En gros de façon générale, si j'ai une entrée via entry comment la réutiliser dans un autre fichier comme une simple variable int ?
    Si une fonction dans un script saisi un entier, pour qu'il soit accessible à l'extérieur de la fonction, il faudra que la fonction retourne l'entier à l'appelant de la fonction.

    Et que la fonction soit appelée depuis le même script ou pas ne changera rien.

    Avec tkinter les choses se compliquent puisqu'on va lire l'Entry une fois la saisie terminée signalée par un évènement (clic sur un Button) qui provoque l'appel d'un callback. Cette fonction là n'est pas appelée depuis le programme mais par tkinter.

    Impossible de récupérer son retour!
    Les solutions seront du côté variables globales/classes/... et demandent de savoir un peu plus programmer que le débutant qui débute (et passer du temps dans les tutos).

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

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Par défaut
    Merci pour ces infos…j'avais bien constaté qu'il ne m'était pas possible de récupérer la donnée.

    Donc si je veux que cela fonctionne :
    - soit j'utilise mon programme dans une console python et tant pis pour l'esthétique
    - soit j'intègre mon programme à une fonction pour que tout soit fait au clic-button
    - soit je me mets aux variables et aux classes. J'ai déjà commencé mais c'est un gros morceau, je vais devoir réfléchir au ration temps investissement / utilité car ce n'est un programme de folie non plus.

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

    Vous n'avez pas besoin de créer des classes ou de savoir programmer orienté objet pour faire de petits programmes avec tkinter. Par contre, les variables et leur portée sont des bases qu'on apprend avec les fonctions (sans tkinter mais utiles lorsqu'on s'y colle).

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

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je ne comprends pas, on peut récupérer la valeur d'une Entry assez facilement pourtant !

    Tu peux essayer ce script si tu veux :
    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
    import threading
    from tkinter import *
     
    def send_entry():
        l.configure(text=e.get(),fg=['red','green'][len(e.get())%2!=0])
        print("L'entrée contient :",e.get())
     
    def get_entry(event):
        threading.Thread(target=send_entry).start()    
     
    win = Tk()
    e = Entry(win)
    e.bind("<Key>",get_entry)
    e.pack()
    l = Label(win,fg="red")
    l.pack()
    win.mainloop()
    J'ai rajouté quelques fioritures, le threading permet à l'Entry de créer un petit embranchement qui donne le temps nécessaire au widget de créer la variable de stockage de l'Entry, sinon le binding appelle la fonction avant que la variable n'est eu le temps de se créer ou de se mettre à jour ce qui donne l'impression que le Label à un train de retard (je te laisse tester sans le threading). Et pi je me suis amusé à changer la couleur du Label pour le fun...

    Wiz me corrigera si nécessaire !

    Edit : En faite il y a moyen de faire sans le threading :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from tkinter import *
     
    def get_entry(event):
        l.configure(text=e.get(),fg=['red','green'][len(e.get())%2!=0])
     
    win = Tk()
    e = Entry(win)
    win.bind("<Key>",get_entry)
    e.pack()
    l = Label(win,fg="red")
    l.pack()
    win.mainloop()
    Dernière modification par Invité ; 12/08/2021 à 22h45.

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

    Citation Envoyé par LeNarvalo Voir le message
    Wiz me corrigera si nécessaire !
    Relisez le post initial. Tout ce que vous montrez est déjà connu mais ça ne répond pas au 3ème point qui comporte la vraie (et immense) question du découpage d'un programme en modules et de leur communication entre eux.

    Pire, la glue à créer entre un module pensé/codé séquentiellement alors que l'autre est l'interface d'un GUI et donc évènementiel par nature.

    Quand on débute, les programmes sont "courts" et le plus simple sera de créer une mouture console (séquentielle) et une mouture GUI (évènementielle). Les codes seront séparés et indépendants.

    Puis lorsqu'on devra se coller à cet exercice plusieurs fois et que les programmes deviendront touffus, on essaiera de dégager des parties communes qu'on pourra partager via des modules.

    Puis lorsqu'on sera un peu plus à l'aise avec la POO, on regardera les différents patterns de conceptions qui permettent d'organiser ce genre de découpage de façon plus structurée.

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

  9. #9
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Par défaut
    Hello,

    Merci pour ces précisions

    @LeNarvalo :*je vais tenter quelques trucs avec tes conseils et on verra bien

    @wiztricks : j'en suis effectivement au premier stade, où je crées deux programmes (console et GUI) en essayant de les raccrocher…puis à partir de POO et pattern, je me suis égaré. Mais cela m'encourage à continuer. Je vais probablement rester sur mon idée d'utiliser le programme en mode console et prendre du temps pour mieux me former quit à y revenir plus tard.

    À propos de formation, j'ai en vue :
    Apprendre à programme de Swinnen
    Modern Tkinter for Busy Python Developers de Rosenman

    Est-ce que cela vous semble être de bonne ressources pour poursuivre ma formation ?

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 728
    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 728
    Par défaut
    Citation Envoyé par Apoptose Voir le message
    Est-ce que cela vous semble être de bonne ressources pour poursuivre ma formation ?
    Tous les cours/tuto. vont permettre de se familiariser avec le vocabulaire technique de base et proposer des exercices.

    Le "bon" du moment sera celui qui vous motivera le plus à lire/relire et passer du temps à faire les exercices. Au bout de quelques jours/semaines, il deviendra lassant, il sera temps d'en élire un autre pour faire un bout de chemin avec.

    Tout ça pour dire que personnellement, je trouve que le Swinnen est bien fait... (mais je n'ai pas eu à apprendre à programmer avec) Et si vous arrivez à vous accrocher, c'est très bien (mais suivant vos attentes ce n'est pas forcément le plus adapté - à vous).

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

  11. #11
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Par défaut
    mais suivant vos attentes ce n'est pas forcément le plus adapté
    Mes attentes sont d'apprendre donc tout est bon…le seul truc que je ne supporte pas ce sont les bouts de code tout prêt à utiliser, j'ai besoin de comprendre le rôle de chaque instruction, option ou mot pour me l'approprier.

    Merci pour tout.

  12. #12
    Invité
    Invité(e)
    Par défaut
    @Apoptose
    Vu ce que tu veux faire, un seul script suffira amplement.

    Sinon je ne sais pas, c'est ça que tu veux faire ?
    Nom : Capture.PNG
Affichages : 81
Taille : 62,0 Ko
    @Wiz c'est mieux, chef ?


    PS : Tu peux faire disparaître visuellement la fenêtre Tkinter mais pas la tuer dans mon exemple, sinon plus de module... Sauf si je me trompe.

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 728
    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 728
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    @Wiz c'est mieux, chef ?
    Pas sûr que vous ayez compris le sujet de la discussion... pas grave, persévérez...

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

  14. #14
    Invité
    Invité(e)
    Par défaut
    @Wiz
    Hum... et ça ?
    Nom : Capture.PNG
Affichages : 83
Taille : 63,0 Ko

Discussions similaires

  1. [Python 2.X] Icône dans un bouton sous python en Tkinter
    Par MisterPython dans le forum Tkinter
    Réponses: 0
    Dernier message: 10/12/2014, 12h09
  2. [QtGui] python: de tkinter(Arcgis 10.1) vers PYQT (Qgis 2.0)
    Par noramokh dans le forum PyQt
    Réponses: 5
    Dernier message: 18/06/2014, 12h52
  3. Stéganographie sur Python et Tkinter
    Par HobbitBourg dans le forum Tkinter
    Réponses: 1
    Dernier message: 09/05/2014, 09h00
  4. Projet ISN Planche de Galton Python/Pygame/Tkinter
    Par Mmemykon dans le forum Tkinter
    Réponses: 13
    Dernier message: 24/04/2014, 22h28
  5. Interface graphique avec python et tkinter
    Par MrTGR57 dans le forum Tkinter
    Réponses: 0
    Dernier message: 23/04/2014, 17h10

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