Forum Programmation.python Questions python

Posté par  .
Étiquettes : aucune
0
19
mar.
2006
Bonjour,
Je me met à python depuis quelques temps, mais j'ai besoin d'aide.
J'ai naturellement potassé l'excellent livre de G.Swinnen plus quelques autres, mais s'ils sont parfaits pour découvrir le langage, ont une certaine distance avec des applications concrètes qui me manquent.
J'ai parcouru le net à la recherche de sources, mais je tombe sur des projets énormes non commentés d'où je n'arrive pas à sortir les éléments qui me manquent.

Voila ce que je cherche à faire:
- une interface graphique avec une case à cocher qui va écrire dans un fichier VALEUR1=VRAI/FAUX en fonction du COCHE/PAS COCHE. Si on rouvre l'interface, que la case soit cochée si le fichier contient VALEUR=VRAI.
C'est une fonction (certainement) extrèmement simple, mais je n'arrive pas à la mettre en pratique. Si je pouvais avoir un code fonctionnel à étudier, je suis sûr d'arriver à faire ce que je veux par la suite.

- Interaction Python/Bash:
Je programme depuis longtemps en bash, et j'aimerais (par la suite) ajouter des interfaces pour lancer mes scripts (qui effectueraient eux même les actions nécessaires). Python permet il un fonctionnement simple pour cela ?
Si oui, avez vous un exemple ?

Merci
  • # Un exemple en Tkinter

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

    Voici un exemple de ce que tu veux faire avec le toolkit Tkinter (ce toolkit est intégré de base dans Python, donc je l'ai choisi par facilité de mise en oeuvre).

    from Tkinter import *

    class App:

      def __init__(self, master):
        fr = Frame(master) # Un cadre pour englober les widgets

        # On définit le widget case à cocher
        self.valeur1 = StringVar() # Une variable pour sauvegarder l'état du widget
        but_valeur1 = Checkbutton(fr, text="Valeur1", onvalue="VRAI", offvalue="FAUX", variable=self.valeur1)
        but_valeur1.pack()
        but_valeur1.select() # Initialisation de l'état à "coché"

        Button(fr, text="Enregistrer", command=self.save).pack()
        Button(fr, text="Fermer", command=master.destroy).pack()
        fr.pack()

      def save(self):
        # Méthode de sauvegarde dans le fichier
        print "Je vais sauver VALEUR1=%s" % self.valeur1.get()
        f = open("monfichier", "w")
        f.write("VALEUR1=%s\n" % self.valeur1.get())
        f.close()

    root = Tk()
    app = App(root)
    root.mainloop()


    Si tu veux plus de renseignements sur le fonctionnement de Tkinter il y a de la doc pas trop mal foutue ici : http://www.pythonware.com/library/tkinter/introduction/index(...)

    Pour ce qui est de l'interaction avec Bash, tout dépend de ce que tu veux faire. Si c'est juste lancer des commandes, il y a l'appel system dans le module os ( http://www.python.org/doc/current/lib/module-os.html ) qui permet cela. Après, je ne sais pas, ça vaut peut-être le coup de porter tes scripts directement en Python...
    • [^] # Re: Un exemple en Tkinter

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

      Bon, j'ai oublié un truc : l'initialisation de l'état de la case à cocher en fonction de la valeur dans le fichier. C'est pas très compliqué, on peut ajouter une méthode get_file_value dans la classe App avec ce code :

        def get_file_value(self):
          val = "FAUX" # valeur par défaut
          try:
            f = open("monfichier")
            lines = f.readlines()
            for line in lines:
              nom, val = line[:-1].split('=')
              if nom == "VALEUR1":
                break
            f.close()
          except:
            print "Erreur lecture fichier"
          return (val == "VRAI")

      Puis, dans la méthode __init__, remplacer la ligne d'initialisation (but_valeur1.select()) par

          if self.get_file_value():
            but_valeur1.select()
          else:
            but_valeur1.deselect()
      • [^] # Re: Un exemple en Tkinter

        Posté par  . Évalué à 2.

        Merci, c'est exactement ce que je veux faire. Je vais pouvoir voir où je bloquais en analysant ça.

        Mes scripts sont volontairement écris en bash pour être portables et simples à comprendre et ne pas nécessiter de WM. Seuelement, certains utilisateurs réclament du clic...

Suivre le flux des commentaires

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