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
| # -*- coding: utf-8 -*-
import Tkinter as Tk
from PIL import Image,ImageTk #sudo apt-get install python-imaging-tk
import tkMessageBox
import Tix #sudo apt-get install tix
import ttk
import sqlite3
class FenRangement(Tix.Tk):
def __init__(self,event=None):
Tix.Tk.__init__(self)
self.initialize()
self.mainloop()
def initialize(self):
#Creation de la fenetre principale
self.title('Rangement')
self.geometry("%dx%d+%d+%d" %(180,250,((self.winfo_screenwidth()-180)/2),((self.winfo_screenheight()-250)/2)+58))
self.resizable(width=False, height=False)
##################################
#Affichage fond et icone
self.can = Tix.Canvas(self,width = 180, height = 250, bd=10,relief=Tix.RIDGE)
self.can.create_text(90,30,text="Rangements disponible :",fill='black',font='Times 11')
self.varcombo = Tix.StringVar()
self.comboR = Tix.ComboBox(self.can, editable=1, dropdown=1, variable=self.varcombo,relief=Tix.GROOVE)
self.comboR.entry.config(state='readonly')## met la zone de texte en lecture seule
self.comboR.subwidget( "slistbox" ).config( width = 9 )
self.comboR.subwidget("label" ).destroy()
self.comboR.place(x=15,y=60,width=150)
Tix.Button(self.can,text="Supprimer",command=self.suppression).place(x=43,y=110,width=95)
self.EntryAjouter = Tix.Entry(self.can)
self.EntryAjouter.place(x=15,y=160,width = 150)
Tix.Button(self.can,text="Ajouter",command=self.ajout).place(x=20,y=200,width=70)
Tix.Button(self.can,text="Fermer",command=self.fermer).place(x=90,y=200,width=70)
self.can.pack()
########################
#Remplissage combobox
self.rempcombobox()
#####################
def rempcombobox(self): # Remplissage de la Combobox
self.BDD = sqlite3.connect("StockBDD.sq3") # Connection a la BDD
self.BDDcurseur = self.BDD.cursor() # Création du curseur
try: # Test si BDD existante
self.BDDcurseur.execute("SELECT emplacement FROM rangements")
for i in self.BDDcurseur:
self.comboR.insert(Tix.END,i)
except: # Création de la BDD le cas échéant
self.BDDcurseur.execute("CREATE TABLE rangements ( emplacement TEXT )")
def fermer(self): # Permet d'enregistrer les changement de la BDD puis fermer la fenetre
self.BDD.commit()
self.BDDcurseur.close()
self.BDD.close()
self.destroy()
def suppression(self): #suppression de l'élément selectionné dans la liste et de l'entry puis de la BDD
txtsuppression = self.varcombo.get()
if txtsuppression is not "":
self.comboR.entry.config(state='normal') # Suppression du text dans l'entry
self.comboR.subwidget_list['entry'].delete(0,Tix.END) #IDEM
self.comboR.entry.config(state='readonly')#END
try: # test dans le cas ou l'élément à supprimer l'a déjà été
self.BDDcurseur.execute("DELETE FROM rangements WHERE emplacement=(?)",(txtsuppression,)) # Suppression de l'élement selectionné dans la BDD
self.indexsupp = self.comboR.subwidget_list['slistbox'].subwidget_list['listbox'].curselection() # Suppression de la valeur dans la listbox
self.comboR.subwidget_list['slistbox'].subwidget_list['listbox'].delete( first=self.indexsupp , last=None )#IDEM
except:
tkMessageBox.showerror("Erreur","Impossible de supprimer l'élément. \n (Elément déjà supprimé?)",parent=self)
else:
tkMessageBox.showerror("Erreur","Veuillez saisir un rangement a supprimer",parent=self) #Aucune selection
def ajout(self): # ajout d'un nouvel élement
txtajout = self.EntryAjouter.get()
if txtajout is not "":
self.BDDcurseur.execute("INSERT INTO rangements( emplacement ) VALUES(?)",(txtajout,)) # ajout a la BDD
self.comboR.insert(Tix.END,txtajout) #ajout dans la listbox
self.EntryAjouter.delete(0,Tix.END) #effacement de l'entry
else:
tkMessageBox.showerror("Erreur","Veuillez saisir un rangement a ajouter",parent=self)
if __name__ == "__main__":
FenRangement() |
Partager