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
| #!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-
import sys
import time
try:
import pygtk
pygtk.require("2.0")
except:
pass
try:
import gtk
import gobject
import string
except:
sys.exit(1)
class dialogue():
def settitre(self, champsaisie,evenement):
self.Titre=champsaisie.get_text() # la bonne méthode ?????
#print "Contenu du champ de saisie : %s\n" % self.Titre
print "Contenu du champ de saisie : %s" % self.Titre
def validation(self,evenement):
self.result = gtk.RESPONSE_OK
print "action en cours"
def __init__(self,texteAsaisir,phrasesaisie,fenetreparent=None,complement=None):
self.fenetreparent=fenetreparent
self.texteAsaisir=texteAsaisir
self.phrasesaisie=phrasesaisie
self.Titre=""
self.complement_ici=complement # complément d'affichage dans la fenêtre un texte très long une liste etc...
def run(self):
#++++++++++++++++++++++++++++++++
# Creation de la boite de dialogue
# 1 bouton Valider
# 1 bouton Annuler
#++++++++++++++++++++++++++++++++
BoiteNote = gtk.Dialog(self.texteAsaisir, self.fenetreparent,
gtk.DIALOG_MODAL,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OK, gtk.RESPONSE_OK))
#étage création du bandeau supérieur
self.boite_bandeau_haut = gtk.HBox(False,1)
#titre de la fiche
etiquettetitre = gtk.Label(self.phrasesaisie)
self.boite_bandeau_haut.pack_start(etiquettetitre, False, False, 0)
champsaisie = gtk.Entry()
champsaisie.set_width_chars(60) # def le largeur de boite
champsaisie.set_editable(True)
#La méthode qui suit permet de définir une partie du texte comme sélectionnée,
#de start (début) à end (fin). Cette option est principalement utilisée dans les cas
#où l'on fixe un texte par défaut pour le champ de saisie et que l'on souhaite que
#l'utilisateur puisse le supprimer facilement.
champsaisie.connect("event", self.settitre) # <------------------ pas BUG ?????
self.boite_bandeau_haut.pack_start(champsaisie, False, False, 0)
#ajout de l'horizontal box dans la vertical box
# dessous j'ai mis False au lieu de True pour que la boîte ne s'étende pas automatiquement
if self.complement_ici!=None:
#ajout de texte complémentaire pour aide à la saisie
for element in self.complement_ici:
etiquettetitre = gtk.Label(element)
BoiteNote.vbox.pack_start(etiquettetitre, False, True, 0)
#print "coucou"
champsaisie.connect("activate",self.validation)# pour connecteur de la touche entrée pour valider la saisie par touche entrée
# la dernière ligne c'est pour la saisie
BoiteNote.vbox.pack_start(self.boite_bandeau_haut, False, True, 0)
# Affichage des elements de la boite de dialogue
BoiteNote.vbox.show_all()
# On lance la boite de dialogue et on recupere la reponse
self.result = BoiteNote.run()
if self.result == gtk.RESPONSE_OK:
# L'utilisateur valide
print" ==============> validation OK"
else:
# L'utilisateur annule (soit gtk.RESPONSE_CANCEL, soit gtk.RESPONSE_NONE)
print" ==============> annulation saisie"
# Destruction de la boite de dialogue
BoiteNote.destroy()
return self.result, self.Titre
if __name__ == "__main__":
# essai 1
test=dialogue("texteAsaisir","phrasesaisie")
result, valdate =test.run()
if (result == gtk.RESPONSE_OK):
print "recuperation de la donnéees %s " %valdate |