Forum Programmation.python Recuperer les gtk.Entry en PyGTK

Posté par  .
Étiquettes : aucune
0
18
mai
2006
Bonjour tout le monde...

Je suis un petit nouveau dans le monde de PyGTK.
Ce que je souhaite creer : un formulaire et recuperer les informations entree pour les stocker dans un fichier texte.

mais je ne vois pas comment recuperer les informations et les stocker, ceci en cliquant sur un bouton...

Voici ce que j'ai fais pour le moment :


#!/usr/bin/env python

# exemple champsaisie.py

import gtk
import hildon

class SaisieTexte:
def fct_rappel_entree(self, widget, champsaisie):
textesaisi = champsaisie.get_text()
print "Contenu du champ de saisie : %s\n" % textesaisi

def __init__(self):
# Creation d'une nouvelle fenetre
app = hildon.App()
# This is a view in the main window. There can be multiple of these.
fenetre = hildon.AppView("View One")
# Set the view and titles to the application
app.set_title("UITest")
app.set_two_part_title(True)
app.set_appview(fenetre)

fenetre.connect("delete_event", gtk.mainquit)

boite_v = gtk.VBox(False, 0)
fenetre.add(boite_v)
boite_v.show()

boite_h1 = gtk.HBox(False, 0)
boite_v.add(boite_h1)
boite_h1.show()

label1 = gtk.Label("Nom")
boite_h1.pack_start(label1, True, True, 0)
label1.show()

champsaisie1 = gtk.Entry()
boite_h1.pack_start(champsaisie1, True, True, 0)
champsaisie1.connect("activate", self.fct_rappel_entree, champsaisie1)
champsaisie1.set_text("salut")
champsaisie1.insert_text(" tout le monde", len(champsaisie1.get_text()))
champsaisie1.select_region(0, len(champsaisie1.get_text()))
boite_v.pack_start(champsaisie1, True, True, 0)
champsaisie1.show()

boite_h2 = gtk.HBox(False, 0)
boite_v.add(boite_h2)
boite_h2.show()

label2 = gtk.Label("Prenom")
boite_h2.pack_start(label2, True, True, 0)
label2.show()

champsaisie2 = gtk.Entry()
boite_h2.pack_start(champsaisie2, True, True, 0)
champsaisie2.connect("activate", self.fct_rappel_entree, champsaisie2)
champsaisie2.set_text("salut")
champsaisie2.insert_text(" tout le monde", len(champsaisie2.get_text()))
champsaisie2.select_region(0, len(champsaisie2.get_text()))
boite_v.pack_start(champsaisie2, True, True, 0)
champsaisie2.show()

boite_h3 = gtk.HBox(False, 0)
boite_v.add(boite_h3)
boite_h3.show()

label3 = gtk.Label("Mail")
boite_h3.pack_start(label3, True, True, 0)
label3.show()

champsaisie3 = gtk.Entry()
boite_h3.pack_start(champsaisie3, True, True, 0)
champsaisie3.connect("activate", self.fct_rappel_entree, champsaisie3)
champsaisie3.set_text("salut")
champsaisie3.insert_text(" tout le monde", len(champsaisie3.get_text()))
champsaisie3.select_region(0, len(champsaisie3.get_text()))
boite_v.pack_start(champsaisie3, True, True, 0)
champsaisie3.show()

bouton1 = gtk.Button(stock=gtk.STOCK_SAVE)
bouton1.connect_object("clicked", gtk.mainquit, fenetre)
boite_v.pack_start(bouton1, True, True, 0)
bouton1.set_flags(gtk.CAN_DEFAULT)
bouton1.grab_default()
bouton1.show()
fenetre.show()
app.show()

bouton2 = gtk.Button(stock=gtk.STOCK_CLOSE)
bouton2.connect_object("clicked", gtk.mainquit, fenetre)
boite_v.pack_start(bouton2, True, True, 0)
bouton2.set_flags(gtk.CAN_DEFAULT)
bouton2.grab_default()
bouton2.show()
fenetre.show()
app.show()

def main():
gtk.main()
return 0

if __name__ == "__main__":
SaisieTexte()
main()



Si quelqu'un peu m'aiguiller se serait sympa.

Merci.
  • # Début de réponse ....

    Posté par  . Évalué à 1.

    C'est dans la fonction connectée au signal "clicked" du bouton1 qu'il faut récupérer le contenu de chaque GtkEntry. Comme fait dans ton code actuel, un clic sur le bouton1 quitte l'application.

    Quelque chose du genre :
    bouton1.connect("clicked", fct_sauver_entrees)

    avec :
    def fct_sauver_entrees():
    text1 = champsaisie1.get_text()
    text2 = champsaisie2.get_text()
    text3 = champsaisie3.get_text()

    etc ...

  • # Indispensable

    Posté par  (site web personnel) . Évalué à 2.

  • # Merci...

    Posté par  . Évalué à 1.

    Merci à vous deux jlh et rangzen...

    Je vais essayer de la maniere dont tu m'a parler jlh... ca m'a l'air pas mal du tout !!!
    Pour les liens, Rangzen, j'en avais deja trouver certains mais il y en a de tres bon dqns ceux que tu m'a conseillé... Je vais essayer de me dépatouiller avec ca...

    Encore merci...
  • # modification aporter mais erruer venue de nul part...

    Posté par  . Évalué à 1.

    Bonjour tout le monde...

    alors ja'ai appoerter des modification a mon prog mais j'ai une ereur qui persiste :

    Traceback (most recent call last):
    File "saisietexte.py", line 130, in ?
    SaisieTexte()
    File "saisietexte.py", line 108, in __init__
    bouton1.connect("clicked", self.enter_callback(fenetre, champsaisie1, champsaisie2, champsaisie3, champsaisie4, champsaisie5, champsaisie6))
    TypeError: second argument must be callable

    Je ne vois pas d'ou ca viens mais je pense aue les experts en python on du deja avoir ce souci...
    Mon code est le suivant :

    #!/usr/bin/env python

    import gtk
    import hildon

    class SaisieTexte:

    def enter_callback(self, fenetre, entry1, entry2, entry3, entry4, entry5, entry6):
    entry_text1 = entry1.get_text()
    entry_text2 = entry2.get_text()
    entry_text3 = entry3.get_text()
    entry_text4 = entry4.get_text()
    entry_text5 = entry5.get_text()
    entry_text6 = entry6.get_text()
    logfile = open('test.txt', 'w')
    logfile.write(entry_text1)
    logfile.write(entry_text2)
    logfile.write(entry_text3)
    logfile.write(entry_text4)
    logfile.write(entry_text5)
    logfile.write(entry_text6)
    logfile.close()
    print file('test.txt').read()

    def __init__(self):

    app = hildon.App()

    fenetre = hildon.AppView("Form appview")

    app.set_title("Form title")
    app.set_two_part_title(True)
    app.set_appview(fenetre)

    fenetre.connect("delete_event", gtk.mainquit)

    boite_v0 = gtk.VBox(False, 0)
    fenetre.add(boite_v0)
    boite_v0.show()

    tab = gtk.Table(70, 120, True)
    boite_v0.add(tab)
    tab.show()

    label1 = gtk.Label("Nom :")
    tab.attach(label1, 18, 30, 1, 9)
    label1.show()

    champsaisie1 = gtk.Entry()
    champsaisie1.set_max_length(50)
    tab.attach(champsaisie1, 60, 110, 1, 9)
    champsaisie1.show()

    label2 = gtk.Label("Prenom :")
    tab.attach(label2, 19, 32, 11, 19)
    label2.show()

    champsaisie2 = gtk.Entry()
    champsaisie2.set_max_length(50)
    tab.attach(champsaisie2, 60, 110, 11, 19)
    champsaisie2.show()

    label3 = gtk.Label("Adresse :")
    tab.attach(label3, 19, 32, 21, 29)
    label3.show()

    champsaisie3 = gtk.Entry()
    champsaisie3.set_max_length(50)
    tab.attach(champsaisie3, 60, 110, 21, 29)
    champsaisie3.show()

    label4 = gtk.Label("Code Postal :")
    tab.attach(label4, 19, 36, 31, 39)
    label4.show()

    champsaisie4 = gtk.Entry()
    champsaisie4.set_max_length(50)
    tab.attach(champsaisie4, 60, 110, 31, 39)
    champsaisie4.show()

    label5 = gtk.Label("Ville :")
    tab.attach(label5, 16, 30, 41, 49)
    label5.show()

    champsaisie5 = gtk.Entry()
    champsaisie5.set_max_length(50)
    tab.attach(champsaisie5, 60, 110, 41, 49)
    champsaisie5.show()

    label6 = gtk.Label("Mail :")
    tab.attach(label6, 16, 30, 51, 59)
    label6.show()

    champsaisie6 = gtk.Entry()
    champsaisie6.set_max_length(50)
    tab.attach(champsaisie6, 60, 110, 51, 59)
    champsaisie6.show()

    bouton1 = gtk.Button(stock=gtk.STOCK_SAVE)
    bouton1.connect("clicked", self.enter_callback(fenetre, champsaisie1, champsaisie2, champsaisie3, champsaisie4, champsaisie5, champsaisie6))
    tab.attach(bouton1, 30, 50, 62, 68)
    bouton1.show()

    bouton3 = gtk.Button(stock=gtk.STOCK_CLOSE)
    bouton3.connect("clicked", gtk.mainquit, fenetre)
    tab.attach(bouton3, 70, 90, 62, 68)
    bouton3.show()

    fenetre.show()
    app.show()

    def main():
    gtk.main()
    return 0

    if __name__ == "__main__":
    SaisieTexte()
    main()




    Si vous pouvez m'expliquer, ce serait sympa....

    Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.