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 :

Fermer son navigateur apres avoir selectionné son fichier


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut Fermer son navigateur apres avoir selectionné son fichier
    Bonjour à tous ,

    Je me suis crée une petite application avec 4 pages .Dans la page 4 j'aie un objet TextEdit avec un bouton "ouvrir un fichier .csv"
    Le but est de lire le fichier csv dans l'objet QTextEdit incorporé dans la page 4 .

    Alors mon programme fonctionne , cad le fichier est sélectionné puis lu dans le QTextEdit .
    Seulement , c'est le navigateur "nautilus" qui refuse de se fermer une fois que j'aie selectionné le fichier .

    Que dois-je faire ? (je précise que je débute sur python et que je suis sous le système "ubuntu linux"

    def ouvreunfichier(self):
    name = QtGui.QFileDialog.getOpenFileName(self,'Ouvrir un fichier',"/home/" ," (* .csv)") # ouvre le navigateur exemple nautilus
    monfichiercsv = open(str(name),'r')
    self.ouvreunediteur()

    with monfichiercsv:
    text = monfichiercsv.read()
    self.textEdit1.setText(text)

    # QtGui.QFileDialog.close()
    DynPosSiz(name)


    def ouvreunediteur(self):

    self.textEdit1 = QtGui.QTextEdit(self)
    #self.setCentralWidget(self.textEdit1)
    self.textEdit1.setGeometry(QtCore.QRect(20, 67, 601, 341))
    self.textEdit1.setObjectName("textEdit1")

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Pour poster du code il faut utiliser les balises [code] et non pas [quote].

    Le système "ubuntu linux" c'est nouveau, ça a l'air pas mal.

    Pour en venir à ta question, qu'est-ce-que tu appelles une page et qu'est-ce que Nautilus (navigateur de fichiers Gnome ) vient fiche là-dedans ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Je parle des pages d'un tabWidget . Oublions "nautllus" , il s'agit plutôt du gestionnaire de fichiers
    QFileDialog (qui pour moi ressemble à un navigateur) .

    Donc le widget QFileDialog se déclenche bien , le fichier csv est lu après avoir cliqué sur le bouton "Ouvrir"
    mais QFileDialog ne se ferme pas ...

    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
      #Ajout de la fenêtre à onglets
            self.tabWidget = QtGui.QTabWidget(self)
            self.tabWidget.setGeometry(50,50,745,790)
     
            #Création de 2 QWidget qui permettront ensuite de créer les pages du QTabWidget
            self.page1 = QtGui.QWidget(self.tabWidget)
            self.page2 = QtGui.QWidget(self)
            self.page3 =QtGui.QWidget(self.tabWidget)
            self.page4 =QtGui.QWidget(self.tabWidget)
     
            self.tabWidget.addTab(self.page1, "selection")
            self.tabWidget.addTab(self.page2, "DB")
            self.tabWidget.addTab(self.page3, "management")
            self.tabWidget.addTab(self.page4, "Fichier csv")
     
            #Modification de la couleur de fond des QWidget.
            self.page1.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.page1.setAutoFillBackground(True)
            self.page2.setPalette(QtGui.QPalette(QtGui.QColor("blue")))
            self.page2.setAutoFillBackground(True)
            self.page3.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.page3.setAutoFillBackground(True)
            self.page4.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.page4.setAutoFillBackground(True)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Alors , cela fonctionne mais uniquement sous certaines conditions .

    Voici ce que je cherche à faire :

    1/Ouvrir un fichier csv et l'afficher dans un EditText
    2/ Récupérer le chemin absolu du fichier selectionné
    3/Transmettre le chemin à une autre fonction qui se déclenche nomée "DynPosSiz"

    Le fichier est affiché uniquement si je ne lance pas la fonction "DynPosSiz" .

    Sinon la fonction DynPosSiz , se déclenche bien mais QFileDialog ne se ferme plus .
    J'aie tenté de le fermer avec .close et de le cacher avec .isHidden sans succés .

    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
    def ouvreunfichier(self):
            name = QtGui.QFileDialog.getOpenFileName(self,'Ouvrir un fichier',"/home/" ," (* .csv)") # ouvre le navigateur exemple nautilus
     
            # autre utilité la variable name contient le chemin absolu du fichier sélectionné
            monfichiercsv = open(str(name),'r')
            #self.ouvreunediteur()
     
            with monfichiercsv:
                text = monfichiercsv.read()
                self.textEdit1.setText(text)
     
     
    #        QtGui.QFileDialog.close()
            name.isHidden       
            DynPosSiz(name)

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    T'as une drôle de façon de lire un fichier.

    J'ai testé ta méthode et je n'ai pas ce problème (Python 2)

    Essaye comme ceci, à la place de ta complication:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            name = QtGui.QFileDialog.getOpenFileName(None, 'Ouvrir un fichier', "/home/" , "(*.*)")
            with open(name, 'r') as inf:
                text = inf.read()
     
            self.textEdit1.setText(text)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Oui cela fonctionne jusqu'à un certain point .Si je fait appel à une fonction située dans un autre dossier (package + fichier __INIt__)
    cela ne fonctionne plus .

    Ici la fonction ajoutée s'appelle "runDPS" .
    J'aie les 2 cas , soit "runDPS" se lance et je ne vois plus le fichier sélectionné dans mon interface utilisateur .
    (QtFileDialog ne se ferme pas)
    Soit "runDPS" ne se lance pas et je vois le fichier sélectionné dans l'interface .

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    from Chap9.DynPS import runDPS
     
    def ouvreunfichier(self):
     
            name = QtGui.QFileDialog.getOpenFileName(None, 'Ouvrir un fichier', "/home/" , "(*.*)")
            with open(name, 'r') as inf:
                text = inf.read()
     
            self.textEdit1.setText(text)
     
            runDPS(self,name)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def runDPS(self,name):
        print name

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 80
    Points
    80
    Par défaut
    Alors , j'aie trouvé une solution bête consistant à ajouter une étape de validation intermédiaire avec une
    simple QmessageBox . Je n'aie pas vraiement d'explication rationnelle , je vois cela comme une sorte
    de "gestion d'erreur ou d'exception" . Le .csv est affiché dans le TextEdit et je peux voir les calculs
    de la suite du programme dans la console de mon éditeur de code Spyder .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def runDPS(self,name):
     
        QMessageBox.information(self, self.trUtf8("Message Box"), self.trUtf8("Vous avez ouvert un fichier .csv"))
        print name
        # etc ... poursuit le programme et les calculs avec les données contenues dans le .csv

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

Discussions similaires

  1. Récupérer une variable après avoir chargé un fichier swf
    Par marcello67 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 12/01/2009, 09h37
  2. S'enregistrer après avoir rempli son panier
    Par mat10000 dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2007, 14h18
  3. Réponses: 5
    Dernier message: 08/12/2006, 18h26
  4. Réponses: 1
    Dernier message: 20/11/2006, 14h04

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