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 :

Un coup de pouce pour le noob, Tkinter


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Un coup de pouce pour le noob, Tkinter
    Salut à tous,

    Voilà j'ai débuté il y a peu la programmation python et particulièrement la partie gui avec tkinter. J'ai commencé à développer un système de logiciel caisse plutôt basique pour un projet perso.

    J'ai mis en place ma fenêtre, mes boutons, la zone de texte etc.. Jusque là pas de soucis, puis comme sur tout logiciel caisse, j'aimerai que lorsque l'on clique sur un bouton (ex: Bœuf au whisky) le texte : "1 Bœuf au whisky 12€" s'inscrive sur la partie droite destiné à recevoir le texte (en gros il s'agit d'un panier récoltant la liste de vos achats). Cependant la ou je rencontre un problème c'est que j'aimerai lorsque je clique deux fois sur le même bouton (ex "Bœuf au whisky") même si ce n'est pas de manière consécutive, avoir le texte : "2 Bœuf au whisky 24€" et ainsi de suite. Actuellement j'ai le contenue suivant : "1 Bœuf au whisky 12€" puis à la ligne "1 Bœuf au whisky 12€".

    Et là c'est le flou total, je n'ai aucune idée de comment arriver à mes fins. Je surfe de tuto à tuto en passant par les forums et rien... Je pense que je ne dois pas savoir ou chercher... En gros il faudrait que lorsque l'on clique sur le bouton, il ajoute +1 à la variable u correspondant au nombre d'unité d'un même produit. Après prix du produit * u du produit = prix total du produit. Et en plus ne pas réafficher le produit lorsque l'on clique à nouveau dessus (juste changé l'unité). Mais comment faire...

    Donc si l'un de vous à une petite idée pour m'éclairer ça serait génial. Je tiens à préciser que comme tout noob je comprends mieux avec un exemple

    Je vous mets le code en pièce jointe ainsi qu'une image de l'interface graphique.

    Merci d'avance pour le coup de pouce !!
    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    from tkinter import *
    import tkinter as tk
     
    root=tk.Tk()
     
    root.minsize(800, 480)
    root.maxsize(800, 480)
    root.title("Monsieur Fine Bouche")
    root.overrideredirect(1)
     
    Imagedefond =PhotoImage(file = '\Concepts\Image\Frigo\Fond.gif') 
    Fond = tk.Label(root, image=Imagedefond)
    Fond.grid(row=1,column=1, rowspan=6,columnspan=6)
     
     
     
     
    panier=tk.Text(root, width=20, height=14)
    panier['bg']='black'
    panier['fg']='white'
    panier['font'] = "EraserDust 13"
    panier.place(x="580", y="60")
     
     
    l = '\n'
    u = 1
    pe = u*6
    pp = u*12
    pd = u*5
    esp = "    "
     
    valeur="€"
     
    chaine1 = " Foie gras pistache  "
    chaine2 = " Saumon gravlax  "
    chaine3 = " Foie gras amareto  "
    chaine4 = " Colin aux noisettes  "
    chaine5 = " Saumon vanille  "
    chaine6 = " Boeuf au whisky  "
    chaine7 = " Opéra  "
    chaine8 = " Cheese cake  "
    chaine9 = " Forêt noire  "
     
     
    e1= esp + str(u) + chaine1 + str(pe) + valeur + l
    e2= esp + str(u) + chaine2 + str(pe) + valeur + l
    e3= esp + str(u) + chaine3 + str(pe) + valeur + l
    p1= esp + str(u) + chaine4 + str(pp) + valeur + l
    p2= esp + str(u) + chaine5 + str(pp) + valeur + l
    p3= esp + str(u) + chaine6 + str(pp) + valeur + l
    d1= esp + str(u) + chaine7 + str(pd) + valeur + l
    d2= esp + str(u) + chaine8 + str(pd) + valeur + l
    d3= esp + str(u) + chaine9 + str(pd) + valeur + l
     
     
     
     
    def com1():
        panier.insert(INSERT, e1)
     
     
    def com2():
        panier.insert(INSERT,e2)
     
     
    def com3():
       panier.insert(INSERT, e3)
     
     
    def com4():
        panier.insert(INSERT, p1)
     
     
    def com5():
        panier.insert(INSERT, p2)
     
     
    def com6():
        panier.insert(INSERT, p3)
     
     
    def com7():
        panier.insert(INSERT, d1)
     
     
    def com8():
        panier.insert(INSERT, d2)
     
     
    def com9():
        panier.insert(INSERT, d3)
     
     
     
    photo = PhotoImage(file = '\Concepts\Image\Frigo\Foie gras pistache.gif')
    Entrée1 = tk.Button(root, image=photo, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com1)
    Entrée1.place(x="20", y="60")  
     
    photo2 = PhotoImage(file = '\Concepts\Image\Frigo\Saumon gravlax.gif')
    Entrée2 = tk.Button(root, image=photo2, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com2)
    Entrée2.place(x="20", y="200") 
     
    photo3 = PhotoImage(file = '\Concepts\Image\Frigo\Foie gras amaretto.gif')
    Entrée3 = tk.Button(root, image=photo3, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com3)
    Entrée3.place(x="20", y="340") 
     
     
     
    photo4 = PhotoImage(file = '\Concepts\Image\Frigo\Colin aux noisettes.gif')
    Plat1 = tk.Button(root, image=photo4, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com4)
    Plat1.place(x="210", y="60") 
     
    photo5 = PhotoImage(file = '\Concepts\Image\Frigo\Saumon vanille.gif')
    Plat2 = tk.Button(root, image=photo5, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com5)
    Plat2.place(x="210", y="200") 
     
    photo6 = PhotoImage(file = '\Concepts\Image\Frigo\Boeuf au Whisky.gif')
    Plat3 = tk.Button(root, image=photo6, width=160, height=120, relief="groove", bg="black", activebackground="white", borderwidth=0, command=com6)
    Plat3.place(x="210", y="340") 
     
     
     
    photo7 = PhotoImage(file = '\Concepts\Image\Frigo\Opéra.gif')
    Dessert1 = tk.Button(root, image=photo7, width=160, height=120, relief="groove", bg="black", activebackground="white", borderwidth=0, command=com7)
    Dessert1.place(x="400", y="60") 
     
    photo8 = PhotoImage(file = '\Concepts\Image\Frigo\Cheese cake.gif')
    Dessert2 = tk.Button(root, image=photo8, width=160, height=120, relief="groove", bg="black", activebackground="white", borderwidth=0, command=com8)
    Dessert2.place(x="400", y="200") 
     
    photo9 = PhotoImage(file = '\Concepts\Image\Frigo\Forêt noire.gif')
    Dessert3 = tk.Button(root, image=photo9, width=160, height=120, relief="groove",bg="black", activebackground="white", borderwidth=0, command=com9)
    Dessert3.place(x="400", y="340") 
     
     
    nom_im = PhotoImage(file='\Concepts\Image\Frigo\Paiement.gif')
     
    def val1():
        top = tk.Toplevel(width=350, height=150)
        can = tk.Canvas(top, width = 377, height = 195) 
        can.create_image(0, 0, anchor=NW, image=nom_im, tags="truc")
        can.pack()
        top.after(10000, lambda: top.destroy())
     
    def an1():
       panier.destroy()
     
     
     
    photo10 = PhotoImage(file='\Concepts\Image\Frigo\Valider1.png')
    BouttonV = tk.Button(root, image=photo10, width=70, height=70, relief="flat",activebackground="white", borderwidth=0, command=val1)
    BouttonV.place(x="600", y="390")
     
    photo11 = PhotoImage(file = '\Concepts\Image\Frigo\Annuler1.png')
    BouttonX = tk.Button(root, image=photo11, width=70, height=70, relief="flat",activebackground="white", borderwidth=0, command=an1)
    BouttonX.place(x="700", y="390")
     
     
     
    root.mainloop()
    Nom : Capture.GIF
Affichages : 467
Taille : 166,6 Ko
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 302
    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 302
    Points : 36 801
    Points
    36 801
    Par défaut
    Salut,

    Une fois que vos lignes de texte ont été insérées dans le widget Text, le seul moyen de savoir ce qui a été écrit dedans sera d'en récupérer le contenu, parcourir les lignes pour voir si elle contient une chaîne de caractères données, et le cas échéant la remplacer par une nouvelle ligne.

    Le boulot serait semblable si vous partiez de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> texte = '1 A 12\n2 B 10\n"
    pour arriver à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> texte = '2 A 24\n2 B 10\n"
    suite à l'ajout d'une unité de A.

    En programmation, pour s'en sortir on va "structurer" les données en informations.
    On va par exemple dire qu'il y a des articles A, B, ... , que chaque article à un coût et traduire çà sous la forme d'un dictionnaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    articles = { 'A' : 12, 'B': 5 }
    Après on va peut être créer une entité "commande" traduisant article et quantité commandée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande = { 'A': 1, 'B': 2 }
    Ca va permettre d'écrire une fonction "afficher":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> def afficher(commande):
    ...     total = 0
    ...     for label, qty in commande.items():
    ...         valeur =  articles[label] * qty
    ...         print(qty, label, valeur)
    ...         total += valeur
    ...     print ('total', total)
    ...
    >>> afficher(commande)
    1 A 12
    2 B 10
    total 22
    Et de grandement simplifier l'ajout d'une unité de A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> commande['A'] += 1
    >>> afficher(commande)
    2 A 24
    2 B 10
    total 34
    >>>
    Faire cela avec un GUI sera un peu plus compliqué qu'avec de simples "print"... Mais intuitivement, correspond plus à un tableau à trois colonnes: Quantité, Libellé, Total qui peuvent être associés à des Label et organisés en "grille" via grid qu'à des lignes dans un widget Text (on pourrait mais c'est beaucoup plus compliqué).

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Ok je vais regarder dans cette voie. Merci wiztricks !!

Discussions similaires

  1. [Fortran 95] Besoin d'un coup de pouce pour démarrer
    Par R_sponge dans le forum Fortran
    Réponses: 3
    Dernier message: 26/09/2007, 21h47
  2. coup de pouce pour chargement dans clip
    Par seb127 dans le forum Intégration
    Réponses: 7
    Dernier message: 11/07/2007, 10h02
  3. besoin d'un coup de pouce pour strcmp
    Par echantillon dans le forum C
    Réponses: 17
    Dernier message: 04/01/2007, 20h43
  4. Besoin d'1 coup de pouce pour realiser une importation de BD
    Par gizmorambo dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/08/2005, 14h07

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