IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Créer ou modifier un shell avec interface python et le lancer


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut Créer ou modifier un shell avec interface python et le lancer
    voila rebonjour tous le monde

    Suite au crash du serveur et la remise en place de la mise à jour du 23 juillet.

    Je me permet de vous reposté un post que j'ai realisé hier.

    voila je voulais savoir comment faire pour realiser ou modifier un script shell dans une interface graphique et pouvoir INSERE par exemple un lien de fichier et un texte.


    EXEMPLE :

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ceci est "insertion du lien ou du texte saisie" mon shell

    je vous remercie d'avance de vos réponses.

    Je suis a votre disposition pour de plus ample renseignement.

    Bonne journée

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Si tu veux que les membres du forum t'aident, il va falloir être plus précis.
    Qu'est-ce qui te pose problème exactement ?

    Les fichiers shell sont des fichiers textes. Pour la manipulation de tels fichiers, regarde du coté des fonctions open, read, write, close ...
    cf. http://python.developpez.com/cours/P...le-objects.php

    Pour ce qui concerne les interfaces graphiques, il existe plusieurs librairies (par exemple tkinter). En fouillant sur developpez tu devrais pouvoir trouver des tutoriels sur le sujet.

    Cordialement,
    Mathieu
    Un verre vide se plaint, un verre plein se vide ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    bon j'ai peut etre pas été trop clair alors je vais reexpliquer plus clairement.

    en faite je veux creer une interface avec Glade

    qui comportera un champ ou je peux aller chercher un fichier "lien"

    un champ ou je peut saisir du texte.

    un bouton validé et un bouton corriger

    j'aimerais apres au lancement de se programme fait avec une interface glade



    j'aimerais que via cette interface que sa me genere un script avec les information c'est a dire des ligne de commande au quelle je rajoute le lien du fichier et le texte saisi et que sa me le lance par la suite.


    voila je ne vois pas trop comment l'expliquer autrement.

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Pour ce qui est de l'utilisation de Glade, je ne connais pas.

    Pour lire un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fic = open(nom_du_fichier, "r")
    content = fic.read()
    fic.close()
    print content
    Pour créer un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic = open(nom_du_fichier, "w")
    fic.write("le contenu de ce fichier\n")
    fic.close()
    Pour ajouter du texte supplémentaire à un fichier existant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic = open(nom_du_fichier, "a")
    fic.write("texte supplémentaire")
    fic.close()
    Bien sûr, c'est du code élémentaire à adapter selon les besoins de lecture / écriture et à enrichir (boucles, conditions, traitement d'erreur, ...)

    Bon courage pour la suite ...
    Un verre vide se plaint, un verre plein se vide ...

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    J'ai pas bien compris ce que tu veux, mais voilà un exemple d'interface qui pourrait te servir :

    fichier "interface.glade"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
    <!--Generated with glade3 3.4.5 on Tue Jul 29 20:42:56 2008 -->
    <glade-interface>
      <widget class="GtkWindow" id="window">
        <property name="border_width">15</property>
        <property name="window_position">GTK_WIN_POS_CENTER</property>
        <property name="default_width">640</property>
        <property name="default_height">480</property>
        <signal name="destroy" handler="on_window_destroy"/>
        <signal name="delete_event" handler="on_window_delete_event"/>
        <child>
          <widget class="GtkVBox" id="vbox1">
            <property name="visible">True</property>
            <property name="spacing">35</property>
            <child>
              <widget class="GtkFileChooserWidget" id="filechooser">
                <property name="visible">True</property>
                <property name="do_overwrite_confirmation">True</property>
                <property name="preview_widget_active">False</property>
              </widget>
            </child>
            <child>
              <widget class="GtkEntry" id="entry">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="text" translatable="yes">Saisir le texte ici</property>
              </widget>
              <packing>
                <property name="expand">False</property>
                <property name="position">1</property>
              </packing>
            </child>
            <child>
              <widget class="GtkHButtonBox" id="hbuttonbox1">
                <property name="visible">True</property>
                <child>
                  <widget class="GtkButton" id="b_appliquer">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="label" translatable="yes">gtk-apply</property>
                    <property name="use_stock">True</property>
                    <property name="response_id">0</property>
                    <signal name="clicked" handler="on_b_appliquer_clicked"/>
                  </widget>
                </child>
                <child>
                  <widget class="GtkButton" id="b_annuler">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="label" translatable="yes">gtk-undo</property>
                    <property name="use_stock">True</property>
                    <property name="response_id">0</property>
                    <signal name="clicked" handler="on_b_annuler_clicked"/>
                  </widget>
                  <packing>
                    <property name="position">1</property>
                  </packing>
                </child>
              </widget>
              <packing>
                <property name="expand">False</property>
                <property name="pack_type">GTK_PACK_END</property>
                <property name="position">2</property>
              </packing>
            </child>
          </widget>
        </child>
      </widget>
    </glade-interface>

    fichier "monprogramme.py"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
     
    import gobject
    import pygtk
    pygtk.require('2.0')
    import gtk
    import gtk.glade
     
    #==============================================================================
     
    class Fenetre:
        """Classe principale du programme."""
     
        def __init__(self):
            # Chargement des widgets
            self.widgets = gtk.glade.XML("interface.glade", 'window')
            events = {
                'on_b_appliquer_clicked': self.appliquer,
                'on_b_annuler_clicked':   self.annuler,
                'on_window_delete_event': self.ev_delete,
                'on_window_destroy':      self.ev_destroy
            }
            self.widgets.signal_autoconnect(events)
            # Affichage
            self['window'].set_transient_for(None)
            self['window'].show_all()
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def appliquer(self, data=None):
            """Gestion du clic sur 'appliquer'."""
            print self['entry'].get_text()
            print self['filechooser'].get_filename()
            return
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def annuler(self, data=None):
            """Gestion du clic sur 'annuler'."""
            print "Annuler"
            return
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def ev_delete(self, widget=None, event=None, data=None):
            """Gestion de l'evenement 'delete_event'."""
            return False
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def ev_destroy(self, widget=None, data=None):
            """Gestion de l'evenement 'destroy'."""
            gtk.main_quit()
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def main(self):
            """Boucle principale."""
            gtk.main()
            return 0
     
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
        def __getitem__(self, key):
            """Permer d'appeler un widget par self['nom_du_widget']."""
            return self.widgets.get_widget(key)
     
    #==============================================================================
     
    if __name__ == "__main__":
        print "START"
        Fenetre().main()
        print "STOP"
     
    #==============================================================================

    Tu peux te baser là-dessus et remplacer les fonctions appliquer/annuler par les exemples de Mdriesbach.

    N'hésite pas à poser des questions si tu ne comprend pas...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    je vous remeci je vais essayer de voir comment ça fonctionne je vous tien au courant ""et oui debutant""

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    voila j'ai testé, j'ai pas mal comprit l'exemple

    je vais essayer de le modifier a ma façon pour ne pas avoir la fenetre de navig mais plus une ligne qui mouvre une nouvelle fenetre pour aller chercher le fichier


    je n'arrive pas trop encore a enregistré mon texte ni mon lien mais bon sa devrais le faire on va voir

    sinon en ce qui concerne le lancement du script creer comment je peux faire

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Un verre vide se plaint, un verre plein se vide ...

  9. #9
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Si tu veux ouvrir une autre fenêtre pour choisir ton fichier, tu peux utiliser le widget "FileChooserButton" ; je crois qu'il est disponible dans Glade.

    Pour lancer un script shell, regarde du côté de os.system() ou du module subprocess.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    voila quelques jours de vacance sont passé.

    Je me suis quand meme penché dessus, mais j'y comprend pas grand chose, je n'arrive pas a créer un cript avec des données apres appuie sur le bouton appliquer.

  11. #11
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Tu peux nous donner un exemple de ce que tu veux faire ?
    Précise :
    - les données que tu rentres dans l'interface
    - le script que ton prog devrait retourner

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    bon j'ai resolu mon probleme en faisant appel au Xml rpc

    merci a tous

    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. freezes dans le shell avec thread python
    Par OttisToole dans le forum Général Python
    Réponses: 0
    Dernier message: 10/06/2009, 10h16
  2. modifier fenetre tkinter avec le shell idle
    Par SeRrA777 dans le forum EDI/RAD
    Réponses: 1
    Dernier message: 07/01/2009, 22h03
  3. Réponses: 2
    Dernier message: 27/10/2006, 18h54
  4. comment créer un mail avec Zope / Python ?
    Par malmzi2007 dans le forum Zope
    Réponses: 3
    Dernier message: 12/07/2006, 19h19
  5. Créer un T9 en C avec interface grahique.
    Par Talfox dans le forum C
    Réponses: 2
    Dernier message: 16/01/2006, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo