Bonjour à tous,

Je travail à temps perdu sur un petit programme tout simple qui me permet de sauver du temps quand j'enregistre mes numéros de confirmation de paiement de facture à ma banque.

En gros, j'ouvre le programme, je choisi un fournisseur dans une liste, puis le montant en argent, puis le numéro de confirmation donné par ma banque et enfin je met des commentaires s'il y a lieu.

J'ai la possibilité de modifier la liste de fournisseur en cliquant sur le bouton ajout (elle est enregistré dans un fichier txt). Or, lorsque je modifie cette liste, je suis obligé de fermer mon programme puis de le ré-ouvrir sinon elle ne s'actualise pas, ce qui fait pas beau comme programme

Si quelqu'un a une idée pour régler ça, j'ai essayé plein de truc différent mais sa marche pas.

Je vous met mon code (débutant ):

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
 
#! /usr/bin/env python
# -*- coding: utf-8 -*-
 
#############################################################################
# Gestionnaire de transaction                                               #
# Créé par: Pascal St-louis                                                 #
# En date du: 2014-01-14                                                    #
#---------------------------------------------------------------------------#
# Module :                                                                  #
#           tkinter                                                         #
#           os                                                              #
#           time                                                            #
#############################################################################
 
#---Importation des modules
try:
    from tkinter import *
    from tkinter.ttk import *
    import os, time
except ImportError as error:
    print("Impossible de charger le module: ", error)
    print("Sortie forcé du systeme")
    try:
        os._exit(0)
    except:
        print("Systeme bloqué, quitter manuellement")
 
#---Variable
titre = "GesTransac"
screenX = 200
screenY = 300
nomfichier1 = "relever.txt"
nomfichier2 = "fournisseur.txt"
 
#---Fonction
def listCombo(choix, liste):
    """Génère une liste déroulante"""
    box = Combobox(textvariable = choix, values = liste, state = "readonly")
 
    return box
 
def valider():
    """Format les chaines de caractère dans les bon standars puis sauvegarde
dans une fichier"""
    date = time.strftime("%Y-%m-%d") #date du jour
 
    chaine1 = saisie.get() #formatage du nombre monaitère
    if chaine1[-1] != "$":
        chaine1 = chaine1 + "$"
    ok = False
    for signe in chaine1:
        if signe == ".":
            ok = True
    if ok == False:
        chaineB = chaine1[:-1]
        chaine1 = chaineB + ".00$"       
 
    chaine3 = saisie3.get(1.0, END) #Formatage du champs de commantère
    chaine3 = chaine3.strip()
    chaine3 = chaine3.lower()
    chaine3 = chaine3.capitalize()
 
    texte = date + " " + select.get() + " " + chaine1 + " " + saisie2.get() + " " + chaine3 + "\n"
 
    with open(nomfichier1, "a") as fichier:
        fichier.write(texte)
 
def erase():
    """Efface un contenu"""
    saisie.delete(0, END)
    saisie2.delete(0, END)
    saisie3.delete(1.0, END)
 
def consulter(fichier):
    """Ouvre un programme"""
    os.system(fichier)
 
def lirefichier():
    """Lit un fichier et retourne son contenu"""
    with open(nomfichier2, "r") as fichier:
        contenu = fichier.read()
 
    return contenu
 
#---fenetre principal
fen1 = Tk()
fen1.title(titre)
#centrage et dimensionnement de la fenetre
fen1.geometry("%dx%d+%d+%d" % (screenX, screenY, fen1.winfo_screenwidth()/2 -
                               (screenX/2), fen1.winfo_screenheight()/2 - (
                                   screenY/2)))
 
#Placement des items dans la fenêtre
Label(fen1, text="Fournisseur").place(x=0, y=0)
 
select = StringVar()
listCombo(select, lirefichier()).place(x=0, y=20)
Button(fen1, text="ajout", width=5, command=lambda: consulter(nomfichier2)).place(x=145, y=17)
 
Label(fen1, text="Montant").place(x=0, y=50)
 
saisie = Entry(fen1, width=23)
saisie.place(x=0, y=70)
 
Label(fen1, text="# de confimation").place(x=0, y=100)
 
saisie2 = Entry(fen1, width=23)
saisie2.place(x=0, y=120)
 
Label(fen1, text="Commentaire").place(x=0, y=150)
 
saisie3 = Text(fen1, width=18, height=6)
saisie3.place(x=0, y=170)
 
Button(fen1, text="Valider", width=7, command=valider).place(x=0, y=270)
Button(fen1, text="Effacer", width=7, command=erase).place(x=52, y=270)
Button(fen1, text="Quitter", width=7, command=fen1.destroy).place(x=104, y=270)
Button(fen1, text="Voir", width=5, command=lambda: consulter(nomfichier1)).place(x=156, y=270)
 
fen1.mainloop()
 
#---Sortie du systeme
print("Sortie du systeme")
fen1.quit()
os._exit(0)