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
|
#! /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, screen):
"""Ouvre un programme"""
screen.destroy() #pour actualiser la fenêtre principal
os.system(fichier)
restart() #redémarre la fenêtre principal lorsque l'on quittre le fichier ouvert par os.system
def lirefichier():
"""Lit un fichier et retourne son contenu"""
with open(nomfichier2, "r") as fichier:
contenu = fichier.read()
return contenu
def restart():
"""Créé la fenêtre principal"""
#---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, fen1)).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, fen1)).place(x=156, y=270)
fen1.mainloop()
#---Programme principal
restart()
#---Sortie du systeme
print("Sortie du systeme")
os._exit(0) |