Advertisement
Guest User

TestFiles.py

a guest
Nov 16th, 2011
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.70 KB | None | 0 0
  1. import sys
  2. from sqlite3 import *
  3. import datetime
  4. from Tkinter import *
  5. import ttk
  6. import tkMessageBox
  7. import Queue
  8.    
  9. class TestFiles:
  10.     def __init__(self,principale = None):
  11.         self.DefinirVariables()
  12.         f = self.ConstruireWidgets(principale)
  13.         self.PlacerWidgets(f)
  14.         self.AfficherStatut()
  15.         self.DerniereFile = 'fifo'
  16.    
  17.     def DefinirVariables(self):
  18.         self.TypeDeFile = ''
  19.         self.DerniereFile = ''
  20.         self.StatutPlein = StringVar()
  21.         self.StatutVide = StringVar()
  22.         self.Element = StringVar()
  23.         self.Sortie = StringVar()
  24.         # Definit les files
  25.         self.fifo = Queue.Queue(10)
  26.         self.lifo = Queue.LifoQueue(10)
  27.         self.pq = Queue.PriorityQueue(10)
  28.         self.obj = self.fifo
  29.  
  30.     def ConstruireWidgets(self,principale):
  31.         # Definit nos  widgets
  32.         fenetre = Frame(principale)
  33.         self.f1 = Frame(fenetre,
  34.             relief = SUNKEN,
  35.             borderwidth=2,
  36.             width = 300,
  37.             padx = 3,
  38.             pady = 3
  39.         )
  40.         self.btnFifo = Button(self.f1,
  41.             text = "FIFO"
  42.         )    
  43.         #
  44.         self.btnFifo.bind('<Button-1>',
  45.             lambda e: self.btnMain(1)
  46.         )        
  47.         self.btnLifo = Button(self.f1,
  48.             text = "LIFO"
  49.         )    
  50.         self.btnLifo.bind('<ButtonRelease-1>',
  51.             lambda e: self.btnMain(2)
  52.         )
  53.         self.btnPriority = Button(self.f1,
  54.             text = "PRIORITY"
  55.         )    
  56.         self.btnPriority.bind('<ButtonRelease-1>',
  57.             lambda e: self.btnMain(3)
  58.         )
  59.         self.f2 = Frame(fenetre,
  60.             relief = SUNKEN,
  61.             borderwidth=2,
  62.             width = 300,
  63.             padx = 3,
  64.             pady = 3
  65.         )
  66.         self.txtAdd = Entry(self.f2,
  67.             width=5,
  68.             textvar=self.Element
  69.         )
  70.         self.txtAdd.bind('<Return>',self.AjouterALaFile)
  71.         self.btnAdd = Button(self.f2,
  72.             text='Ajout dans la file',
  73.             padx = 3,
  74.             pady = 3
  75.         )
  76.         self.btnAdd.bind('<ButtonRelease-1>',self.AjouterALaFile)
  77.         self.btnGet = Button(self.f2,
  78.             text='Recupere element suivant',
  79.             padx = 3,
  80.             pady = 3
  81.         )
  82.         self.btnGet.bind('<ButtonRelease-1>',self.RecupererDansFile)
  83.         self.lblEmpty = Label(self.f2,
  84.             textvariable=self.StatutVide,
  85.             relief=FLAT
  86.         )
  87.         self.lblFull = Label(self.f2,
  88.             textvariable=self.StatutPlein,
  89.             relief=FLAT
  90.         )
  91.         self.lblData = Label(self.f2,
  92.             textvariable=self.Sortie,
  93.             relief = FLAT,
  94.             font=("Helvetica", 16),
  95.             padx = 5
  96.         )
  97.  
  98.         return fenetre
  99.        
  100.     def PlacerWidgets(self, principale):
  101.         fenetre = principale
  102.         # Place les widgets
  103.         fenetre.grid(column = 0, row = 0)
  104.         l = Label(fenetre,text='',relief=FLAT,width = 15, anchor = 'e').grid(column = 0, row = 0)
  105.         l = Label(fenetre,text='',relief=FLAT,width = 15, anchor = 'e').grid(column = 1, row = 0)
  106.         l = Label(fenetre,text='',relief=FLAT,width = 15, anchor = 'e').grid(column = 2, row = 0)
  107.         l = Label(fenetre,text='',relief=FLAT,width = 15, anchor = 'e').grid(column = 3, row = 0)
  108.         l = Label(fenetre,text='',relief=FLAT,width = 15, anchor = 'e').grid(column = 4, row = 0)
  109.                                        
  110.         self.f1.grid(column = 0,row = 1,sticky='nsew',columnspan=5,padx = 5,pady = 5)
  111.         l = Label(self.f1,text='',width = 25,anchor = 'e').grid(column = 0, row = 0)
  112.         self.btnFifo.grid(column = 1,row = 0,padx = 4)
  113.         self.btnLifo.grid(column = 2,row = 0,padx = 4)
  114.         self.btnPriority.grid(column = 3, row = 0, padx = 4)
  115.         self.f2.grid(column = 0,row = 2,sticky='nsew',columnspan=5,padx = 5, pady = 5)
  116.         l = Label(self.f2,text='',width = 15,anchor = 'e').grid(column = 0, row = 0)
  117.         self.txtAdd.grid(column=1,row=0)
  118.         self.btnAdd.grid(column=2,row=0)
  119.         self.btnGet.grid(column=3,row=0)
  120.         self.lblEmpty.grid(column=2,row=1)
  121.         self.lblFull.grid(column=3,row = 1)
  122.         self.lblData.grid(column = 4,row = 0)
  123.  
  124.     def Quitter(self):
  125.         sys.exit()
  126.    
  127.     def btnMain(self,p1):
  128.         if p1 == 1:
  129.             self.TypeDeFile = 'FIFO'
  130.             self.obj = self.fifo
  131.             root.title('Tests Files - FIFO')
  132.             #self.btnFifo.config(relief='sunken')
  133.         elif p1 == 2:
  134.             self.TypeDeFile = 'LIFO'
  135.             self.obj = self.lifo
  136.             root.title('Tests Files - LIFO')
  137.         elif p1 == 3:
  138.             self.TypeDeFile = 'PRIORITY'
  139.             self.obj = self.pq
  140.             root.title('Tests Files - Priorite')
  141.         elif p1 == 4:
  142.             self.TypeDeFile = 'RING'
  143.         print self.TypeDeFile
  144.         self.AfficherStatut()
  145.        
  146.     def AfficherStatut(self):
  147.         # verifie si vide
  148.         if self.obj.empty() == True:
  149.             self.StatutVide.set('Vide')
  150.         else:
  151.             self.StatutVide.set('')
  152.         # verifie si plein
  153.         if self.obj.full() == True:
  154.             self.StatutPlein.set('Plein')
  155.         else:
  156.             self.StatutPlein.set('')
  157.            
  158.     def AjouterALaFile(self,p1):
  159.         temp = self.Element.get()
  160.         if self.TypeDeFile == 'PRIORITY':
  161.             commapos = temp.find(',')
  162.             if commapos == -1:
  163.                 print "ERREUR"
  164.                 tkMessageBox.showerror('Demo File',
  165.                     'Un element Priority doit etre au format\r(priorite,valeur)')
  166.             else:
  167.                 self.obj.put(self.Element.get())
  168.         elif not self.obj.full():
  169.             self.obj.put(self.Element.get())
  170.         self.Element.set('')
  171.         self.AfficherStatut()
  172.        
  173.     def RecupererDansFile(self,p1):
  174.         self.Sortie.set('')
  175.         if not self.obj.empty():
  176.             temp = self.obj.get()
  177.             self.Sortie.set("Sorti {0}".format(temp))
  178.         self.AfficherStatut()
  179.            
  180. if __name__ == '__main__':
  181.     def Centrer(window):
  182.         # recupere largeur et hauteur de l'ecran
  183.         largeurE = window.winfo_screenwidth()
  184.         hauteurE = window.winfo_screenheight()        
  185.         # recupere largeur et hauteur de la fenetre
  186.         largeurF = window.winfo_reqwidth()
  187.         hauteurF = window.winfo_reqheight()
  188.         xc = (largeurE-largeurF)/2
  189.         yc = (hauteurE-hauteurF)/2
  190.         window.geometry("%dx%d+%d+%d"%(largeurF,hauteurF,xc,yc))
  191.         window.deiconify()
  192.    
  193.     root = Tk()
  194.     #root.withdraw()  
  195.     root.title('Tests File - FIFO')
  196.     demo = TestFiles(root)
  197.     root.after(3,Centrer,root)
  198.     root.mainloop()
  199.  
  200.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement