Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # widgetdemo1f.py
- # Application complete
- from Tkinter import *
- import tkMessageBox
- class Demo:
- def __init__(self,principale):
- self.DefinirVariables()
- f = self.ConstruireWidgets(principale)
- self.PlacerWidgets(f)
- def ConstruireWidgets(self,principale):
- # definition de nos widgets
- fenetre = Frame(principale)
- # labels (ou etiquettes)
- self.fenetreLabels = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2, width = 500)
- self.lbl1 = Label(self.fenetreLabels,text="Label plat",relief = FLAT, width = 13,borderwidth = 2)
- self.lbl2 = Label(self.fenetreLabels,text="Label creux", relief = SUNKEN, width = 13, borderwidth = 2)
- self.lbl3 = Label(self.fenetreLabels,text="Label arete", relief = RIDGE, width = 13, borderwidth = 2)
- self.lbl4 = Label(self.fenetreLabels,text="Label souleve", relief = RAISED, width = 13, borderwidth = 2)
- self.lbl5 = Label(self.fenetreLabels,text="Label rainure", relief = GROOVE,width = 13, borderwidth = 2)
- # boutons
- self.fenetreBoutons = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2, width = 500)
- self.btn1 = Button(self.fenetreBoutons,text="Bouton plat", relief = FLAT, borderwidth = 2)
- self.btn2 = Button(self.fenetreBoutons,text="Bouton creux", relief = SUNKEN, borderwidth = 2)
- self.btn3 = Button(self.fenetreBoutons,text="Bouton arete", relief = RIDGE, borderwidth = 2)
- self.btn4 = Button(self.fenetreBoutons,text="Bouton souleve", relief = RAISED, borderwidth = 2)
- self.btn5 = Button(self.fenetreBoutons,text="Bouton rainure", relief = GROOVE, borderwidth = 2)
- self.btn1.bind('<ButtonRelease-1>',lambda e: self.clicBouton(1))
- self.btn2.bind('<ButtonRelease-1>',lambda e: self.clicBouton(2))
- self.btn3.bind('<ButtonRelease-1>',lambda e: self.clicBouton(3))
- self.btn4.bind('<ButtonRelease-1>',lambda e: self.clicBouton(4))
- self.btn5.bind('<ButtonRelease-1>',lambda e: self.clicBouton(5))
- # checkbox (ou cases a cocher)
- self.fenetreCases = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
- self.chk1 = Checkbutton(self.fenetreCases, text = "Case a cocher normale",variable=self.Chk1Val)
- self.chk2 = Checkbutton(self.fenetreCases, text = "Case a cocher",variable=self.Chk2Val,indicatoron = False)
- self.chk1.bind('<ButtonRelease-1>',lambda e: self.clicCases(1))
- self.chk2.bind('<ButtonRelease-1>',lambda e: self.clicCases(2))
- self.btnInverserCases = Button(self.fenetreCases,text="Inverser cases")
- self.btnInverserCases.bind('<ButtonRelease-1>',self.btnInverser)
- # boutons radio
- self.fenetreBoutonsRadio = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
- self.rb1 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 1", variable = self.RBVal, value = 1)
- self.rb2 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 2", variable = self.RBVal, value = 2)
- self.rb3 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 3", variable = self.RBVal, value = 3)
- self.rb1.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
- self.rb2.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
- self.rb3.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio())
- self.rb4 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 4", variable = self.RBVal2, value = "1-1")
- self.rb5 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 5", variable = self.RBVal2, value = "1-2")
- self.rb6 = Radiobutton(self.fenetreBoutonsRadio, text = "Radio 6", variable = self.RBVal2, value = "1-3")
- self.rb4.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())
- self.rb5.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())
- self.rb6.bind('<ButtonRelease-1>',lambda e: self.clicBoutonRadio2())
- # champs de texte
- self.fenetreChampsTexte = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
- self.txt1 = Entry(self.fenetreChampsTexte, width = 10)
- self.txt2 = Entry(self.fenetreChampsTexte, disabledbackground="#cccccc", width = 10)
- self.btnDesactiver = Button(self.fenetreChampsTexte, text = "Activer/Desactiver")
- self.btnDesactiver.bind('<ButtonRelease-1>', self.clicBoutonDesactiver)
- self.fenetreListe = Frame(fenetre, relief = SUNKEN, padx = 3, pady = 3, borderwidth = 2, width = 500)
- # boite avec barre de defilement pour la liste
- self.defilementV = Scrollbar(self.fenetreListe)
- # liste
- self.liste = Listbox(self.fenetreListe, height = 5,yscrollcommand = self.defilementV.set) # hauteur par defaut = 10
- self.liste.bind('<<ListboxSelect>>',self.listeSelection)
- self.defilementV.config(command = self.liste.yview)
- self.btnEffacerListe = Button(self.fenetreListe,text = "Effacer liste",command = self.effacerListe,width = 11)
- self.btnRemplirListe = Button(self.fenetreListe,text = "Remplir liste",command = self.remplirListe, width = 11)
- # <<ListboxSelect>> est un evenement virtuel
- # remplit la liste
- self.remplirListe()
- # boutons pour afficher les fenetres de messages et de dialogues
- self.fenetreMessages = Frame(fenetre,relief = SUNKEN,padx = 3, pady = 3, borderwidth = 2)
- self.btnMBInfo = Button(self.fenetreMessages,text = "Info")
- self.btnMBWarning = Button(self.fenetreMessages,text = "Avertissement")
- self.btnMBError = Button(self.fenetreMessages,text = "Erreur")
- self.btnMBQuestion = Button(self.fenetreMessages,text = "Question")
- self.btnMBYesNo = Button(self.fenetreMessages,text = "Oui/Non")
- self.btnMBInfo.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(1))
- self.btnMBWarning.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(2))
- self.btnMBError.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(3))
- self.btnMBQuestion.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(4))
- self.btnMBYesNo.bind('<ButtonRelease-1>', lambda e: self.afficheFenetreMessage(5))
- return fenetre
- def PlacerWidgets(self, principale):
- fenetre = principale
- # place les widgets
- fenetre.grid(column = 0, row = 0)
- # place les labels
- self.fenetreLabels.grid(column = 0, row = 1, padx = 5, pady = 5, columnspan = 5,sticky='WE')
- l = Label(self.fenetreLabels,text='Labels |',width=15, anchor='e').grid(column=0,row=0)
- self.lbl1.grid(column = 1, row = 0, padx = 3, pady = 5)
- self.lbl2.grid(column = 2, row = 0, padx = 3, pady = 5)
- self.lbl3.grid(column = 3, row = 0, padx = 3, pady = 5)
- self.lbl4.grid(column = 4, row = 0, padx = 3, pady = 5)
- self.lbl5.grid(column = 5, row = 0, padx = 3, pady = 5)
- # place les boutons
- self.fenetreBoutons.grid(column=0, row = 2, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
- l = Label(self.fenetreBoutons,text='Boutons |',width=15, anchor='e').grid(column=0,row=0)
- self.btn1.grid(column = 1, row = 0, padx = 3, pady = 3)
- self.btn2.grid(column = 2, row = 0, padx = 3, pady = 3)
- self.btn3.grid(column = 3, row = 0, padx = 3, pady = 3)
- self.btn4.grid(column = 4, row = 0, padx = 3, pady = 3)
- self.btn5.grid(column = 5, row = 0, padx = 3, pady = 3)
- # place les cases a cocher et le bouton d'inversion
- self.fenetreCases.grid(column = 0, row = 3, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
- l = Label(self.fenetreCases,text='Cases a cocher |',width=15, anchor='e').grid(column=0,row=0)
- self.btnInverserCases.grid(column = 1, row = 0, padx = 3, pady = 3)
- self.chk1.grid(column = 2, row = 0, padx = 3, pady = 3)
- self.chk2.grid(column = 3, row = 0, padx = 3, pady = 3)
- # place les boutons radio et selectionne le premier
- self.fenetreBoutonsRadio.grid(column = 0, row = 4, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
- l = Label(self.fenetreBoutonsRadio,text='Boutons radio |',width=15,anchor='e').grid(column=0,row=0)
- self.rb1.grid(column = 2, row = 0, padx = 3, pady = 3, sticky = 'EW')
- self.rb2.grid(column = 3, row = 0, padx = 3, pady = 3, sticky = 'WE')
- self.rb3.grid(column = 4, row = 0, padx = 3, pady = 3, sticky = 'WE')
- self.RBVal.set("1")
- l = Label(self.fenetreBoutonsRadio,text='| Un autre groupe |',width = 15, anchor = 'e').grid(column = 5, row = 0)
- self.rb4.grid(column = 6, row = 0)
- self.rb5.grid(column = 7, row = 0)
- self.rb6.grid(column = 8, row = 0)
- self.RBVal2.set("1-1")
- # place les champs de texte
- self.fenetreChampsTexte.grid(column = 0, row = 5, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
- l = Label(self.fenetreChampsTexte,text='Champs de texte |',width=15, anchor='e').grid(column=0,row=0)
- self.txt1.grid(column = 2, row = 0, padx = 3, pady = 3)
- self.txt2.grid(column = 3, row = 0, padx = 3, pady = 3)
- self.btnDesactiver.grid(column = 1, row = 0, padx = 3, pady = 3)
- # place la liste et les boutons associes
- self.fenetreListe.grid(column = 0, row = 6, padx = 5, pady = 5, columnspan = 5,sticky = 'WE')
- l = Label(self.fenetreListe,text='Liste |',width=15, anchor='e').grid(column=0,row=0,rowspan=2)
- self.liste.grid(column = 2, row = 0,rowspan=2)
- self.defilementV.grid(column = 3, row = 0,rowspan = 2, sticky = 'NSW')
- self.btnEffacerListe.grid(column = 1, row = 0, padx = 5)
- self.btnRemplirListe.grid(column = 1, row = 1, padx = 5)
- # boutons de boites de messages et de dialogues
- self.fenetreMessages.grid(column = 0,row = 7, columnspan = 5, padx = 5, sticky = 'WE')
- l = Label(self.fenetreMessages,text='Messages |',width=15, anchor='e').grid(column=0,row=0)
- self.btnMBInfo.grid(column = 1, row = 0, padx= 3)
- self.btnMBWarning.grid(column = 2, row = 0, padx= 3)
- self.btnMBError.grid(column = 3, row = 0, padx= 3)
- self.btnMBQuestion.grid(column = 4, row = 0, padx= 3)
- self.btnMBYesNo.grid(column = 5, row = 0, padx= 3)
- def DefinirVariables(self):
- # definit nos ressources
- self.Chk1Val = IntVar()
- self.Chk2Val = IntVar()
- self.RBVal = IntVar()
- self.RBVal2 = StringVar()
- self.Disabled = False
- # les elements pour notre liste
- self.exemples = ['Element un','Element deux','Element trois','Element quatre']
- def clicBouton(self,val):
- if val == 1:
- print("Clic bouton plat...")
- elif val == 2:
- print("Clic bouton creux...")
- elif val == 3:
- print("Clic bouton arete...")
- elif val == 4:
- print("Clic bouton souleve...")
- elif val == 5:
- print("Clic bouton rainure...")
- def btnInverser(self,p1):
- self.chk1.toggle()
- self.chk2.toggle()
- print("Valeur de la case a cocher 1 : {0}".format(self.Chk1Val.get()))
- print("Valeur de la case a cocher 2 : {0}".format(self.Chk2Val.get()))
- def clicCases(self,val):
- if val == 1:
- print("Valeur de la case a cocher 1 : {0}".format(self.Chk1Val.get()))
- elif val == 2:
- print("Valeur de la case a cocher 1 : {0}".format(self.Chk2Val.get()))
- def clicBoutonRadio(self):
- print("Clic bouton radio - Valeur : {0}".format(self.RBVal.get()))
- def clicBoutonRadio2(self):
- print("Clic bouton radio - Valeur : {0}".format(self.RBVal2.get()))
- def clicBoutonDesactiver(self,p1):
- if self.Disabled == False:
- self.Disabled = True
- self.txt2.configure(state='disabled')
- else:
- self.Disabled = False
- self.txt2.configure(state='normal')
- def effacerListe(self):
- self.liste.delete(0,END)
- def remplirListe(self):
- # Note : effacer d'abord la liste ; aucune verification n'est faite
- for ex in self.exemples:
- self.liste.insert(END,ex)
- # insert([0,ACTIVE,END],element)
- def listeSelection(self,p1):
- print("Clic sur un element de la liste")
- items = self.liste.curselection()
- selitem = items[0]
- print("Index de l'element choisi : {0}".format(selitem))
- print("Texte de l'element choisi : {0}".format(self.liste.get(selitem)))
- def afficheFenetreMessage(self,which):
- if which == 1:
- tkMessageBox.showinfo('Demo','Voici un message INFO')
- elif which == 2:
- tkMessageBox.showwarning('Demo','Voici un message WARNING (avertissement)')
- elif which == 3:
- tkMessageBox.showerror('Demo','Voici un message ERREUR')
- elif which == 4:
- rep = tkMessageBox.askquestion('Demo','Voici une QUESTION ?')
- print('clic sur {0}...'.format(rep))
- elif which == 5:
- rep = tkMessageBox.askyesno('Demo','Voici un message OUI/NON')
- print('clic sur {0}...'.format(rep))
- racine = Tk()
- racine.geometry('750x490+550+150')
- demo = Demo(racine)
- racine.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement