Advertisement
Guest User

Démo Tkinter Widget article 26

a guest
Sep 4th, 2011
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.49 KB | None | 0 0
  1. # widgetdemo1f.py
  2. # Application complete
  3.  
  4. from Tkinter import *
  5. import tkMessageBox
  6.  
  7. class Demo:
  8.     def __init__(self,principale):
  9.         self.DefinirVariables()
  10.         f = self.ConstruireWidgets(principale)
  11.         self.PlacerWidgets(f)
  12.        
  13.     def ConstruireWidgets(self,principale):
  14.         # definition de nos widgets
  15.         fenetre = Frame(principale)
  16.         # labels (ou etiquettes)
  17.         self.fenetreLabels = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2, width = 500)
  18.         self.lbl1 = Label(self.fenetreLabels,text="Label plat",relief = FLAT, width = 13,borderwidth = 2)
  19.         self.lbl2 = Label(self.fenetreLabels,text="Label creux", relief = SUNKEN, width = 13, borderwidth = 2)
  20.         self.lbl3 = Label(self.fenetreLabels,text="Label arete", relief = RIDGE, width = 13, borderwidth = 2)
  21.         self.lbl4 = Label(self.fenetreLabels,text="Label souleve", relief = RAISED, width = 13, borderwidth = 2)
  22.         self.lbl5 = Label(self.fenetreLabels,text="Label rainure", relief = GROOVE,width = 13, borderwidth = 2)
  23.         # boutons
  24.         self.fenetreBoutons = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2, width = 500)
  25.         self.btn1 = Button(self.fenetreBoutons,text="Bouton plat", relief = FLAT, borderwidth = 2)
  26.         self.btn2 = Button(self.fenetreBoutons,text="Bouton creux", relief = SUNKEN, borderwidth = 2)
  27.         self.btn3 = Button(self.fenetreBoutons,text="Bouton arete", relief = RIDGE, borderwidth = 2)
  28.         self.btn4 = Button(self.fenetreBoutons,text="Bouton souleve", relief = RAISED, borderwidth = 2)
  29.         self.btn5 = Button(self.fenetreBoutons,text="Bouton rainure", relief = GROOVE, borderwidth = 2)
  30.         self.btn1.bind('<ButtonRelease-1>',lambda e: self.clicBouton(1))
  31.         self.btn2.bind('<ButtonRelease-1>',lambda e: self.clicBouton(2))
  32.         self.btn3.bind('<ButtonRelease-1>',lambda e: self.clicBouton(3))
  33.         self.btn4.bind('<ButtonRelease-1>',lambda e: self.clicBouton(4))
  34.         self.btn5.bind('<ButtonRelease-1>',lambda e: self.clicBouton(5))
  35.         # checkbox (ou cases a cocher)
  36.         self.fenetreCases = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
  37.         self.chk1 = Checkbutton(self.fenetreCases, text = "Case a cocher normale",variable=self.Chk1Val)
  38.         self.chk2 = Checkbutton(self.fenetreCases, text = "Case a cocher",variable=self.Chk2Val,indicatoron = False)
  39.         self.chk1.bind('<ButtonRelease-1>',lambda e: self.clicCases(1))
  40.         self.chk2.bind('<ButtonRelease-1>',lambda e: self.clicCases(2))
  41.         self.btnInverserCases = Button(self.fenetreCases,text="Inverser cases")
  42.         self.btnInverserCases.bind('<ButtonRelease-1>',self.btnInverser)
  43.         # boutons radio
  44.         self.fenetreBoutonsRadio = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
  45.         self.rb1 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 1", variable = self.RBVal, value = 1)
  46.         self.rb2 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 2", variable = self.RBVal, value = 2)
  47.         self.rb3 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 3", variable = self.RBVal, value = 3)
  48.         self.rb1.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
  49.         self.rb2.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
  50.         self.rb3.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
  51.         self.rb4 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 4", variable = self.RBVal2, value = "1-1")
  52.         self.rb5 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 5", variable = self.RBVal2, value = "1-2")
  53.         self.rb6 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 6", variable = self.RBVal2, value = "1-3")
  54.         self.rb4.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())
  55.         self.rb5.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())
  56.         self.rb6.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())                            
  57.         # champs de texte
  58.         self.fenetreChampsTexte = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
  59.         self.txt1 = Entry(self.fenetreChampsTexte, width = 10)
  60.         self.txt2 = Entry(self.fenetreChampsTexte, disabledbackground="#cccccc", width = 10)
  61.         self.btnDesactiver = Button(self.fenetreChampsTexte, text = "Activer/Desactiver")
  62.         self.btnDesactiver.bind('<ButtonRelease-1>', self.clicBoutonDesactiver)
  63.         self.fenetreListe = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
  64.         # boite avec barre de defilement pour la liste
  65.         self.defilementV = Scrollbar(self.fenetreListe)
  66.         # liste
  67.         self.liste = Listbox(self.fenetreListe, height = 5,yscrollcommand = self.defilementV.set) # hauteur par defaut = 10
  68.         self.liste.bind('<<ListboxSelect>>',self.listeSelection)
  69.         self.defilementV.config(command = self.liste.yview)
  70.         self.btnEffacerListe = Button(self.fenetreListe,text = "Effacer liste",command = self.effacerListe,width = 11)
  71.         self.btnRemplirListe = Button(self.fenetreListe,text = "Remplir liste",command = self.remplirListe, width = 11)          
  72.         # <<ListboxSelect>> est un evenement virtuel
  73.         # remplit la liste
  74.         self.remplirListe()
  75.      
  76.         # boutons pour afficher les fenetres de messages et de dialogues
  77.         self.fenetreMessages = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2)
  78.         self.btnMBInfo = Button(self.fenetreMessages,text = "Info")
  79.         self.btnMBWarning = Button(self.fenetreMessages,text = "Avertissement")
  80.         self.btnMBError = Button(self.fenetreMessages,text = "Erreur")
  81.         self.btnMBQuestion = Button(self.fenetreMessages,text = "Question")
  82.         self.btnMBYesNo = Button(self.fenetreMessages,text = "Oui/Non")
  83.         self.btnMBInfo.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(1))
  84.         self.btnMBWarning.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(2))
  85.         self.btnMBError.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(3))
  86.         self.btnMBQuestion.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(4))
  87.         self.btnMBYesNo.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(5))
  88.         return fenetre
  89.        
  90.     def PlacerWidgets(self, principale):
  91.         fenetre = principale
  92.         # place les widgets
  93.         fenetre.grid(column = 0, row = 0)
  94.         # place les labels
  95.         self.fenetreLabels.grid(column = 0, row = 1, padx = 5, pady = 5, columnspan = 5,sticky='WE')
  96.         l = Label(self.fenetreLabels,text='Labels |',width=15, anchor='e').grid(column=0,row=0)
  97.         self.lbl1.grid(column = 1, row = 0, padx = 3, pady = 5)
  98.         self.lbl2.grid(column = 2, row = 0, padx = 3, pady = 5)
  99.         self.lbl3.grid(column = 3, row = 0, padx = 3, pady = 5)
  100.         self.lbl4.grid(column = 4, row = 0, padx = 3, pady = 5)
  101.         self.lbl5.grid(column = 5, row = 0, padx = 3, pady = 5)
  102.         # place les boutons
  103.         self.fenetreBoutons.grid(column=0, row = 2, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
  104.         l = Label(self.fenetreBoutons,text='Boutons |',width=15, anchor='e').grid(column=0,row=0)
  105.         self.btn1.grid(column = 1, row = 0, padx = 3, pady = 3)
  106.         self.btn2.grid(column = 2, row = 0, padx = 3, pady = 3)
  107.         self.btn3.grid(column = 3, row = 0, padx = 3, pady = 3)
  108.         self.btn4.grid(column = 4, row = 0, padx = 3, pady = 3)
  109.         self.btn5.grid(column = 5, row = 0, padx = 3, pady = 3)    
  110.         # place les cases a cocher et le bouton d'inversion
  111.         self.fenetreCases.grid(column = 0, row = 3, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
  112.         l = Label(self.fenetreCases,text='Cases a cocher |',width=15, anchor='e').grid(column=0,row=0)
  113.         self.btnInverserCases.grid(column = 1, row = 0, padx = 3, pady = 3)                  
  114.         self.chk1.grid(column = 2, row = 0, padx = 3, pady = 3)
  115.         self.chk2.grid(column = 3, row = 0, padx = 3, pady = 3)
  116.         # place les boutons radio et selectionne le premier
  117.         self.fenetreBoutonsRadio.grid(column = 0, row = 4, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
  118.         l = Label(self.fenetreBoutonsRadio,text='Boutons radio |',width=15,anchor='e').grid(column=0,row=0)
  119.         self.rb1.grid(column = 2, row = 0, padx = 3, pady = 3, sticky = 'EW')
  120.         self.rb2.grid(column = 3, row = 0, padx = 3, pady = 3, sticky = 'WE')
  121.         self.rb3.grid(column = 4, row = 0, padx = 3, pady = 3, sticky = 'WE')
  122.         self.RBVal.set("1")        
  123.         l = Label(self.fenetreBoutonsRadio,text='| Un autre groupe |',width = 15, anchor = 'e').grid(column = 5, row = 0)
  124.         self.rb4.grid(column = 6, row = 0)
  125.         self.rb5.grid(column = 7, row = 0)
  126.         self.rb6.grid(column = 8, row = 0)
  127.         self.RBVal2.set("1-1")            
  128.         # place les champs de texte
  129.         self.fenetreChampsTexte.grid(column = 0, row = 5, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
  130.         l = Label(self.fenetreChampsTexte,text='Champs de texte |',width=15, anchor='e').grid(column=0,row=0)
  131.         self.txt1.grid(column = 2, row = 0, padx = 3, pady = 3)
  132.         self.txt2.grid(column = 3, row = 0, padx = 3, pady = 3)
  133.         self.btnDesactiver.grid(column = 1, row = 0, padx = 3, pady = 3)
  134.         # place la liste et les boutons associes
  135.         self.fenetreListe.grid(column = 0, row = 6, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
  136.         l = Label(self.fenetreListe,text='Liste |',width=15, anchor='e').grid(column=0,row=0,rowspan=2)
  137.         self.liste.grid(column = 2, row = 0,rowspan=2)
  138.         self.defilementV.grid(column = 3, row = 0,rowspan = 2, sticky = 'NSW')
  139.         self.btnEffacerListe.grid(column = 1, row = 0, padx = 5)
  140.         self.btnRemplirListe.grid(column = 1, row = 1, padx = 5)        
  141.         # boutons de boites de messages et de dialogues
  142.         self.fenetreMessages.grid(column = 0,row = 7, columnspan = 5, padx = 5, sticky = 'WE')
  143.         l = Label(self.fenetreMessages,text='Messages |',width=15, anchor='e').grid(column=0,row=0)
  144.         self.btnMBInfo.grid(column = 1, row = 0, padx= 3)
  145.         self.btnMBWarning.grid(column = 2, row = 0, padx= 3)
  146.         self.btnMBError.grid(column = 3, row = 0, padx= 3)
  147.         self.btnMBQuestion.grid(column = 4, row = 0, padx= 3)
  148.         self.btnMBYesNo.grid(column = 5, row = 0, padx= 3)
  149.                
  150.     def DefinirVariables(self):
  151.         # definit nos ressources
  152.         self.Chk1Val = IntVar()
  153.         self.Chk2Val = IntVar()
  154.         self.RBVal = IntVar()
  155.         self.RBVal2 = StringVar()                
  156.         self.Disabled = False
  157.         # les elements pour notre liste
  158.         self.exemples = ['Element un','Element deux','Element trois','Element quatre']        
  159.        
  160.     def clicBouton(self,val):
  161.         if val == 1:
  162.             print("Clic bouton plat...")
  163.         elif val == 2:
  164.             print("Clic bouton creux...")
  165.         elif val == 3:
  166.             print("Clic bouton arete...")
  167.         elif val == 4:
  168.             print("Clic bouton souleve...")
  169.         elif val == 5:
  170.             print("Clic bouton rainure...")
  171.                    
  172.     def btnInverser(self,p1):
  173.         self.chk1.toggle()
  174.         self.chk2.toggle()
  175.         print("Valeur de la case a cocher 1 : {0}".format(self.Chk1Val.get()))
  176.         print("Valeur de la case a cocher 2 : {0}".format(self.Chk2Val.get()))        
  177.        
  178.     def clicCases(self,val):
  179.         if val == 1:
  180.             print("Valeur de la case a cocher 1 : {0}".format(self.Chk1Val.get()))
  181.         elif val == 2:
  182.             print("Valeur de la case a cocher 1 : {0}".format(self.Chk2Val.get()))
  183.  
  184.     def clicBoutonRadio(self):
  185.         print("Clic bouton radio - Valeur : {0}".format(self.RBVal.get()))        
  186.     def clicBoutonRadio2(self):
  187.         print("Clic bouton radio - Valeur : {0}".format(self.RBVal2.get()))            
  188.     def clicBoutonDesactiver(self,p1):
  189.         if self.Disabled == False:
  190.             self.Disabled = True
  191.             self.txt2.configure(state='disabled')
  192.         else:
  193.             self.Disabled = False
  194.             self.txt2.configure(state='normal')
  195.            
  196.     def effacerListe(self):
  197.         self.liste.delete(0,END)
  198.        
  199.     def remplirListe(self):
  200.         # Note : effacer d'abord la liste ; aucune verification n'est faite
  201.         for ex in self.exemples:
  202.             self.liste.insert(END,ex)  
  203.         # insert([0,ACTIVE,END],element)
  204.  
  205.     def listeSelection(self,p1):
  206.         print("Clic sur un element de la liste")
  207.         items = self.liste.curselection()
  208.         selitem = items[0]
  209.         print("Index de l'element choisi : {0}".format(selitem))
  210.         print("Texte de l'element choisi : {0}".format(self.liste.get(selitem)))
  211.        
  212.     def afficheFenetreMessage(self,which):
  213.         if which == 1:
  214.             tkMessageBox.showinfo('Demo','Voici un message INFO')
  215.         elif which == 2:
  216.             tkMessageBox.showwarning('Demo','Voici un message WARNING (avertissement)')
  217.         elif which == 3:
  218.             tkMessageBox.showerror('Demo','Voici un message ERREUR')
  219.         elif which == 4:
  220.             rep = tkMessageBox.askquestion('Demo','Voici une QUESTION ?')
  221.             print('clic sur {0}...'.format(rep))
  222.         elif which == 5:
  223.             rep = tkMessageBox.askyesno('Demo','Voici un message OUI/NON')
  224.             print('clic sur {0}...'.format(rep))
  225.            
  226. racine = Tk()
  227. racine.geometry('750x490+550+150')
  228. demo = Demo(racine)
  229.  
  230. racine.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement