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 :

Afficher valeurs dans interface avec tkinter [Python 3.X]


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Par défaut Afficher valeurs dans interface avec tkinter
    Bonjour à tous,

    J'avance bien sur mon projet grace à votre aide et la je suis sur la première partie de l'interface.

    Donc j'ai une fonction qui m'affiche les demandes d'entrée d'information dans l'interface.
    Le premier problème c'est que je dois utiliser TAB pour passer d'un champ à l'autre alors que je voudrais utiliser entrée, j'ai lu que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    root.bind_all("<Return>", function)
    étaut mon ami mais quand je l'utilise ca ne m'active que la première question.

    j"ai également un problème de récupération d'une info de la fonction de saisie essence() vers la fonction d'affichage essenceResult(ess, ent0, ent1, ent2, ent3):
    la variable ess_e définie dans essence() est l'heure de début de la procédure et quand j'essaie de l'importer dans la fonction de résultat pour la stocker j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File "D:\Bureautique\Python\Scripts\interface-test.py", line 57, in essenceResult
        ess_e = ent0.get()
    AttributeError: 'datetime.datetime' object has no attribute 'get'
    J'ai lu que datetime (module) et datetime (fonction) pouvaient être confondus par python et causer des problèmes mais je ne sais pas comment m'en sortir surtout que bien sur je vais vouloir calculer la durée entre ess_e et ess_s qui est elle calculée dans la fonction de saisie quand la procédure est terminée.

    ------------------------------------------
    2° question, je voudrais stocker au fur et à mesure dans un fichier txt les résultats des choses que je rentre pour pouvoir les réexploiter par la suite.

    La j'ai une question théorique, est-ce qu'il est mieux et plus facile de sauver un fichier txt par fonction (du genre essence.txt relais .txt et code60.txt) ou alors est-ce que je peux/dois tout mettre dans le meme fichier, ligne par ligne avec un préfixe de ligne qui dirait à quelle fonction s'applique telle ligne du txt et un ; comme séparateur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c60;c60[0]; c60[1]
    c60;c60[0]; c60[1]
    ess;ess[0]; ess[1]; [ess[2]; ess[3]; ess[4]
    ...
    Et ensuite au rechargement des données je lui dis d'afficher toutes les lignes qui commencent par "c60" dans le formulaire c60 et les lignes "ess" dans le formulaire essence....

    Une fois cette question théorique réglée je voudrais avoir dans mon interface une grille d'affichage de ces données, je pensais faire une boucle for avec comme limite la quantité de lignes (qui va évoluer) mais je ne sais pas comment mettre ca en forme avec tkinter, si j'ai la place de mettre 5 lignes mais qu'au bout d'une heure j'en ai 10 à afficher est-ce que tkinter va me mettre un ascenseur sur le coté ?

    Enfin bref maintenant qu'on a bien avancé dans la logique et le traitement on va avancer dans la disposition et l'UI

    Merci d'avance de votre patience et de votre aide.

    Voila mon code fouillis "WIP", pour le moment je n'ai travaillé que sur le module essence.

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    from tkinter import *
    from datetime import *
    import time
    ess=[[],[],[],[],[]]
    rel=[[],[],[],[],[]]
    c60=[[],[]]
    def c60duree(delta):
    	(h, r) = divmod(delta.seconds, 3600)
    	(m, s) = divmod(r, 60)
    	return "%s%02d:%02d:%02d" % (
    		"%d jour(s) " % delta.days if delta.days > 0 else "",
    		h,
    		m,
    		s,
    	)
    def code60():
        saisie=0
        while saisie != "X":
            c60d=datetime.now()
            print ("Code 60 activé à ", c60d.strftime("%H:%M:%S"))
            saisie=input("Tapez entree pour la fin du code 60, X pour sortir   : ")
            c60f=datetime.now()
            print("Debut ", c60d.strftime("%H:%M:%S"))
            print("Fin   ", c60f.strftime("%H:%M:%S"))
            c60x=c60f-c60d
            print("Duree ", c60duree(c60x))
            print("-------------")
            c60[0].append(c60d)
            c60[1].append(c60f)
    #del(c60[0],[-1])
    #del(c60[1],[-1])
    #return
     
    def relais():
        print("Relais pilote demarré ")
        relh=datetime.now()
        relv=input("Quelle voiture ? ")
        relp=input("Quel pilote repart ? ")
        rele=input("Quantité d'essence ? ")
        input("Tapez entrée à la sortie des stands ")
        rels=datetime.now()
        rel[0].append(relh), rel[1].append(relv), rel[2].append(relp), rel[3].append(rele), rel[4].append(rels)
        print("Dureé ", rels-relh)
        print(*rel)
     
    #def essence():
        #ess=[[],[],[],[]]
        #print("Ravitaillement essence demarré ")
        #essh=datetime.now()
        #essv=input("Quelle voiture ? ")
        #essp=input("Quel pilote ? ")
        #essq=input("Combien de litres ? ")
        #ess[0].append(essh), ess[1].append(essv), ess[2].append(essp), ess[3].append(essq)
        #print(*ess)
     
    def essenceResult(ess, ent0, ent1, ent2, ent3):
        ess_e = ent0.get()
        essv = ent1.get()
        essp = ent2.get()
        essq = ent3.get()
        ess_s = datetime.now()
        ess[0].append(ess_e), ess[1].append(essv), ess[2].append(essp), ess[3].append(essq), ess [4].append(ess_s)
        resultLabel = Label(Frame4, text = str(*ess))
        resultLabel.grid(row = 5, column = 0, columnspan = 2)
     
    def essence():
        print("yr")
        ess_e=datetime.now()
        Frame4.grid(row = 1, column = 0)
        Label1 = Label(Frame4, text = "Ravitaillement demarré ")
        Label1.grid(row = 0, column = 0, columnspan = 2)
        essvLabel = Label(Frame4, text = "Quelle voiture ? ")
        essvEntry = Entry(Frame4)
        essvLabel.grid(row = 1, column = 0)
        essvEntry.grid(row = 1, column = 1)
        essvEntry.focus()
        #root.bind_all("<Return>", function)
        esspLabel = Label(Frame4, text = "Quel pilote part ? ")
        esspEntry = Entry(Frame4)
        esspLabel.grid(row = 2, column = 0)
        esspEntry.grid(row = 2, column = 1)
        esspEntry.focus()
        essqLabel = Label(Frame4, text = "Combien de litres ? ")
        essqEntry = Entry(Frame4)
        essqLabel.grid(row = 3, column = 0)
        essqEntry.grid(row = 3, column = 1)
        essqEntry.focus()
        submitButton = Button(Frame4, text = "Sortie des stands", command = lambda: essenceResult(ess, ess_e, essvEntry, esspEntry, essqEntry))
        submitButton.grid(row = 4, column = 0, columnspan = 2)
    fenetre = Tk()
    fenetre['bg']='grey'
     
    # frame 1
    Frame1 = Frame(fenetre, bg="green", borderwidth=1, relief=GROOVE)
    Frame1.grid(row = 0, column = 0, padx=5, pady=5)
     
    # frame 2
    Frame2 = Frame(fenetre, bg="yellow", borderwidth=1, relief=GROOVE)
    Frame2.grid(row = 0, column = 1, padx=5, pady=5)
     
    # frame 3
    Frame3 = Frame(fenetre, bg="purple", borderwidth=1, relief=GROOVE)
    Frame3.grid(row = 0, column = 2, padx=5, pady=5)
     
    Frame4 = Frame(fenetre)
    Fenetre = Tk()
    fenetre['bg']='grey'
     
    # Ajout de labels
    Button(Frame1, text="Essence", command=essence).pack(padx=300, pady=100)
    Button(Frame2, text="Relais", command=relais).pack(padx=300, pady=100)
    Button(Frame3, text="Code 60", command=code60).pack(padx=300, pady=100)

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

    Lorsqu'on appuie sur TAB, le focus va au widget suivant. Si on veut faire la même chose avec <Return>, le .bind ne sert qu'à détecter que l'utilisateur a entré <Return> le boulot à faire derrière est à écrire.

    Citation Envoyé par jchuillier2 Voir le message
    j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File "D:\Bureautique\Python\Scripts\interface-test.py", line 57, in essenceResult
        ess_e = ent0.get()
    AttributeError: 'datetime.datetime' object has no attribute 'get'
    J'ai lu que datetime (module) et datetime (fonction) pouvaient être confondus par python.
    Si à la ligne 88 vous passez un datetime en paramètre, on récupérera ce datetime à la ligne 57 et un datetime n'a pas de .get (qu'il soit module ou classe). A vous de relire de votre code pour comprendre ce qui ne va pas.

    Citation Envoyé par jchuillier2 Voir le message
    La j'ai une question théorique, est-ce qu'il est mieux et plus facile de sauver un fichier txt par fonction (du genre essence.txt relais .txt et code60.txt) ou alors est-ce que je peux/dois tout mettre dans le meme fichier, ligne par ligne avec un préfixe de ligne qui dirait à quelle fonction s'applique telle ligne du txt et un ; comme séparateur ?
    Lorsque vous hésitez entre deux solutions, faites 2 colonnes pour lister les avantages et inconvénients (pour vous) de chacune. Si ce n'est pas concluant évaluer le coût d'un mauvais choix (ré-écrire du code) et essayer de le réduire (au cas où il faudrait changer quelle serait l'implémentation de départ qui serait la plus simple à faire évoluer).

    Citation Envoyé par jchuillier2 Voir le message
    Une fois cette question théorique réglée je voudrais avoir dans mon interface une grille d'affichage de ces données, je pensais faire une boucle for avec comme limite la quantité de lignes (qui va évoluer) mais je ne sais pas comment mettre ca en forme avec tkinter, si j'ai la place de mettre 5 lignes mais qu'au bout d'une heure j'en ai 10 à afficher est-ce que tkinter va me mettre un ascenseur sur le coté ?
    tkinter vous propose des widgets qui sont peut être plus appropriés pour çà: Text, Listbox, TreeView,... A vous de choisir ce qui va faire le boulot pour vous plutôt que de "refaire".

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jchuillier2 Voir le message
    Le premier problème c'est que je dois utiliser TAB pour passer d'un champ à l'autre alors que je voudrais utiliser entrée, j'ai lu que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    root.bind_all("<Return>", function)
    étaut mon ami mais quand je l'utilise ca ne m'active que la première question.
    Salut !
    Voici une 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
    from tkinter import *
     
    win = Tk()
    Label(win,text="Pseudo").grid(row=0, column = 0)
    ent1 = Entry(win)
    ent1.grid(row=0, column = 1)
     
    Label(win,text="Mot de passe").grid(row=1, column = 0)
    ent2 = Entry(win, show='*')
    ent2.grid(row=1, column = 1)
     
    ent1.bind('<Return>',lambda event: ent2.focus_set())
    ent1.focus_set()
     
    win.mainloop()
    La j'ai une question théorique, est-ce qu'il est mieux et plus facile de sauver un fichier txt par fonction (du genre essence.txt relais .txt et code60.txt) ou alors est-ce que je peux/dois tout mettre dans le meme fichier, ligne par ligne avec un préfixe de ligne qui dirait à quelle fonction s'applique telle ligne du txt et un ; comme séparateur ?
    Comme là bien dis Wiz, il faut penser à rendre le truc modifiable facilement.
    Je ne sais pas si c'est bien mais j'aime bien faire des trucs comme ça :
    Prénom: \n
    Nom de famille: \n
    Age: \n
    ...
    ##################################################
    Prénom: \n
    Nom de famille: \n
    Age: \n
    ...
    Sinon peut-être qu'il faudra passer par une base de donnée avec sqlite3 par exemple.

  4. #4
    Membre confirmé
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Lorsqu'on appuie sur TAB, le focus va au widget suivant. Si on veut faire la même chose avec <Return>, le .bind ne sert qu'à détecter que l'utilisateur a entré <Return> le boulot à faire derrière est à écrire.



    Si à la ligne 88 vous passez un datetime en paramètre, on récupérera ce datetime à la ligne 57 et un datetime n'a pas de .get (qu'il soit module ou classe). A vous de relire de votre code pour comprendre ce qui ne va pas.



    Lorsque vous hésitez entre deux solutions, faites 2 colonnes pour lister les avantages et inconvénients (pour vous) de chacune. Si ce n'est pas concluant évaluer le coût d'un mauvais choix (ré-écrire du code) et essayer de le réduire (au cas où il faudrait changer quelle serait l'implémentation de départ qui serait la plus simple à faire évoluer).



    tkinter vous propose des widgets qui sont peut être plus appropriés pour çà: Text, Listbox, TreeView,... A vous de choisir ce qui va faire le boulot pour vous plutôt que de "refaire".

    - W
    Je ne sais pas comment faire pour le bind, je veux JUSTE que quand je rentre une valeur et que je tape sur entrée ca aille dans la case suivante et que ca stocke la première valeur dans la première variable, c'est tellement compliqué dans un langage supposé de haut niveau de ne pas vouloir utiliser tab et de vouloir utiliser entrée ? Excel fait ca depuis 1990 au moins, et si au bout du pavé numerique il y a la touche entrée et pas la touche tab c'est surement pour quelque chose

    J'ai résolu le problème du get en le supprimant et ca fonctionne.

    C'est justement parce que je n'y connais rien que je vous demande la voie à suivre, je veux juste afficher un tableau avec 5 colonnes (heure debut, voiture, pilote, essence, heure sortie) sans limite de lignes, la place physique sur l'ecran sera limitée mais à ce moment la il met un ascenseur, access le fait très ben dans un etat (mais le VBA est encore plus indigeste que le python alambiqué avec des modules qui ont le meme nom que des fonctions.....ils ne peuvent pas remplacer un des datetime par un dt et garder l'autre en datetime ? )

    Merci de l'aide

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

    Citation Envoyé par jchuillier2 Voir le message
    Excel fait ca depuis 1990 au moins, et si au bout du pavé numerique il y a la touche entrée et pas la touche tab c'est surement pour quelque chose
    Excel a été programmé pour faire çà... et l'utilisateur n'a rien de particulier à faire pour que çà marche. Là vous êtes dans la peau du programmeur qui doit écrire cette fonctionnalité là... Comprenez vous que ce n'est pas le même point de vue?

    Citation Envoyé par jchuillier2 Voir le message
    c'est tellement compliqué dans un langage supposé de haut niveau de ne pas vouloir utiliser tab et de vouloir utiliser entrée ?
    Python n'est pas un langage de haut niveau comparé par exemple à Delphi qui est plutôt orienté développement d'application de gestion graphiques.
    C'est un langage de haut niveau comparé à C.

    Citation Envoyé par jchuillier2 Voir le message
    C'est justement parce que je n'y connais rien que je vous demande la voie à suivre, je veux juste afficher un tableau avec 5 colonnes
    Si vous n'y connaissez rien, ouvrez des tutos pour voir ce que sont les widgets de base tkinter et comment on les mets en œuvre. Puis vous choisissez ceux qui vous semblent les plus adaptés.

    On a aucune idée de l'application que vous souhaitez développer, du temps que vous pourrez y consacrer ni de ce qui sera facile ou difficile (pour vous).

    Comme on ne va pas écrire votre application, impossible de choisir à votre place.

    Citation Envoyé par jchuillier2 Voir le message
    (mais le VBA est encore plus indigeste que le python alambiqué avec des modules qui ont le meme nom que des fonctions.....ils ne peuvent pas remplacer un des datetime par un dt et garder l'autre en datetime ? )
    Il n'y a pas de confusion possible entre "datetime" et "datetime.datetime" mais si çà vous embrouille, rien n'empêche d'écrire "import datetime as dt".

    Vous devez vous familiariser avec les outils que vous voulez utilisez et savoir ce que vous pouvez en tirer plutôt que de râler.

    note: personne ici ne vous a demandé de programmer quoi que ce soit avec Python et tkinter. C'est votre choix. A vous d'assumer la formation préalable que cela suppose plutôt que de venir ici pour qu'on y pallie.

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

  6. #6
    Invité
    Invité(e)
    Par défaut
    Sinon j'ai donné une solution !

  7. #7
    Membre confirmé
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Sinon j'ai donné une solution !
    Désolé, j'avais pas vu !!!!

    Voila, c'est le ent2.focus_set() qui me manquait.

    MILLE mercis, je continue

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

    Citation Envoyé par jchuillier2 Voir le message
    Voila, c'est le ent2.focus_set() qui me manquait.
    Cela donne juste le focus a ent2 dans ce cas particulier.

    Si on veut que l'entrée de <Return> sur ent1 agisse comme un <Tab>, il faudrait plutôt écrire ent1.tk_focusNext().focus_set() (traduit donner le focus au suivant qu'on ignore à priori).

    Pour faire que <Return> agisse comme <Tab>, on écrira plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from tkinter import *
     
    win = Tk()
     
    for i, text in enumerate('abc'):
        Label(win,text=text).grid(row=i, column = 0)
        Entry(win).grid(row=i, column = 1)
     
    win.bind('<Return>',lambda e: e.widget.event_generate('<Tab>'))
     
    win.mainloop()
    Et on a déjà 3 solutions...

    Déjà si vous n'en trouver même pas une seule c'est que vous avez zappé l'apprentissage... Et si vous en trouvez une (c'est pas si mal) mais difficile de comparer... et pour comparer, il faut quand même avoir un peu potassé pour avoir plusieurs solutions, une idée des avantages/inconvénients et choisir en connaissance de cause.

    Sinon on se retrouve a prendre le premier truc qui à l'air de marcher sans réfléchir aux conséquences...

    - W
    edit: au cas où,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    win.bind('<Return>',lambda e: e.widget.event_generate('<Tab>'))
    s'optimise en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    win.bind('<Return>','event generate %W <Tab>')
    "optimise" car on évite les aller-retours entre python et Tk
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre confirmé
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Par défaut
    C'est en effet plus "simple" comme ca, avec la solution précédente j'enchainais les revois de focus alors que la j'émule bien la touche tab avec return.

    Est-ce que vous pouvez me confirmer que la commande lambda est la pour executer une fonction temporaire (dans notre cas widget.event_generate) ?

    Je confesse bien volontiers que je ne lis pas la doc en complet avant de me lancer, j'essaie, quand je bloque je cherche dans la doc disponible une solution et ensuite je viens poser une question si je ne trouve pas, c'est une (sale) vieille habitude que je traine depuis mes premières tentatives en basic en 85-86

    J'arrive quasiment au bout de ce que je veux faire, il me reste "juste" a stocker mes données dans un .txt associé (ou 2 selon la complexité des procédures de stockage) et de faire une fenêtre "tableur" pour afficher les données déja saisies en dessous de celles que je suis en train de saisir.

    A ce sujet une question théorique, j'ai 2 frames de départ, pour le moment le frame3 me sert à recueillir es réponses aux questions du frame1, quand je voudrais poser des questions dans la fonction exécutée par le frame 2 est-ce que je peux me resservir du modèle du frame3 (meme s'il a déja été appelé par le frame 1 avant ?) ou est-ce que c'est mieux si je crée un frame 4 ?

    Merci beaucoup de votre aide à tous les 2

    JC

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    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 718
    Par défaut
    Citation Envoyé par jchuillier2 Voir le message
    Est-ce que vous pouvez me confirmer que la commande lambda est la pour executer une fonction temporaire (dans notre cas widget.event_generate) ?

    Je confesse bien volontiers que je ne lis pas la doc en complet avant de me lancer, j'essaie, quand je bloque je cherche dans la doc disponible une solution et ensuite je viens poser une question si je ne trouve pas, c'est une (sale) vieille habitude que je traine depuis mes premières tentatives en basic en 85-86
    Depuis nous avons inventé le Web et les moteurs de recherche où taper "python3 lambda" retourne un tas d'articles dont on peut profiter.

    Citation Envoyé par jchuillier2 Voir le message
    A ce sujet une question théorique, j'ai 2 frames de départ, pour le moment le frame3 me sert à recueillir es réponses aux questions du frame1, quand je voudrais poser des questions dans la fonction exécutée par le frame 2 est-ce que je peux me resservir du modèle du frame3 (meme s'il a déja été appelé par le frame 1 avant ?) ou est-ce que c'est mieux si je crée un frame 4 ?
    Même réponse que précédemment: c'est vous qui programmez et supporter les conséquences de vos choix.

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

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    edit: au cas où,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    win.bind('<Return>',lambda e: e.widget.event_generate('<Tab>'))
    s'optimise en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    win.bind('<Return>','event generate %W <Tab>')
    "optimise" car on évite les aller-retours entre python et Tk
    WAOUH !
    Dernière modification par Invité ; 18/07/2021 à 16h45.

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

Discussions similaires

  1. Afficher valeur dans jsp
    Par yasinfo dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 17/04/2009, 16h09
  2. Comment récupérer toutes les valeurs dans :params avec form_tag ?
    Par Didier Pitre dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 17/04/2008, 10h33
  3. Cumul de valeur dans requete avec date
    Par OtObOx dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/07/2007, 17h07
  4. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 10h00
  5. valeurs dans URL avec les pseudo frames
    Par paradeofphp dans le forum Langage
    Réponses: 3
    Dernier message: 05/09/2006, 12h38

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