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

PyQt Python Discussion :

Liaison entre getOpenFileName et une fonction


Sujet :

PyQt Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Liaison entre getOpenFileName et une fonction
    Bonjour à tous, je réalise actuellement un programme me permettant d'isoler des données depuis un fichier au format rw5 (que l'on peut assimiler à du txt). Mon programme fonctionne correctement et j'essaie à présent de réaliser une interface graphique pour rendre le tout plus ergonomique et en créant un fichier exécutable à l'aide de cx_freeze.

    L'interface est simple et contient les éléments suivants:
    - Un bouton Parcourir qui doit permettre de récupérer le fichier brut
    - 3 EditLine qui me permettent de renseigner des coordonnées X Y et Z d'un point
    - Un bouton Calculer qui doit exécuter une fonction ayant comme paramètre le fichier brut et les 3 EditLine

    J'ai réussi à faire fonctionner les 3 EditLine qui sont bien incorporées dans mon calcul, mais je n'arrive pas à automatiser la sélection du fichier brut. Ma fonction est décrite à l'extérieur de la description de l'interface graphique, je fais seulement un appel à elle à l'intérieur. Je ne sais pas comment programmer ceci, si je dois modifier ma fonction au niveau du dossier courant à partir du chemin obtenu dans Parcourir. Qu'en pensez-vous et voici mon programme pour que vous compreniez le problème

    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
    class mainwindow(QMainWindow,Ui_MainWindow):
        def __init__(self):
            super(self.__class__,self).__init__()
            self.setupUi(self)
            self.Parcourir1.clicked.connect(self.openfile)
            self.Calculer.clicked.connect(self.calculate)
    
    
        def openfile(self):
            filename=QFileDialog.getOpenFileName()
            print(filename)
    
    
        def calculate(self):
            e_calculee = self.lineEdit_X.text()
            n_calculee = self.lineEdit_Y.text()
            el_calculee = self.lineEdit_Z.text()
            calcul_gps(filename[0],e_calculee,n_calculee,el_calculee)
    
    if __name__ == "__main__":
    
        app = QApplication(sys.argv)
        form=mainwindow()
        form.show()
        sys.exit(app.exec_())
    Je vous joint aussi le début de ma fonction ou je précise l'utilisation du fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def calcul_gps(source,e_calculee,n_calculee,el_calculee):
        rawfile = open(source, 'r')
        destination = source[:-4]
        destination += str("_calc.txt")
        fichier = open(destination, "w")
        table = [line.rstrip().split() for line in rawfile.readlines()]

  2. #2
    Expert éminent

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

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

    Tu dois garder un référence de filename --> self.filename

    .. et, accessoirement, avec Python3, super s'utilise comme ceci: super().__init__()

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ha d'accord je cherchais trop compliqué. Malheureusement mon code ne fonctionne toujours pas ni le .exe. J'ai essayé de définir le dossier et fichier source en passant par les commande sys. Je pense que le prblème vient de là. Car lorsque j'exécute mon script en mettant la source manuellement, et qui est présente dans le même répertoire que mon script cela fonctionne. Dois-je changer de répertoire courant au moment de l'exécution de mon programme qui doit aller chercher un fichier dans un dossier différent de l'executable ?

    Voici ma MAJ:

    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
    class mainwindow(QMainWindow,Ui_MainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
            self.Parcourir1.clicked.connect(self.openfile)
            self.Calculer.clicked.connect(self.calculate)
     
     
        def openfile(self):
            filename=QFileDialog.getOpenFileName()
            isole_source=filename[0]
            source_sep=isole_source.split("/")
            source=source_sep[-1:]
            path="/".join(source_sep[:-1])
            print(path)
            print (type(source[0]))
            sys.path.append(path)
            print(filename)
     
     
        def calculate(self):
            e_calculee = self.lineEdit_X.text()
            n_calculee = self.lineEdit_Y.text()
            el_calculee = self.lineEdit_Z.text()
            calcul_gps(self.source[0],e_calculee,n_calculee,el_calculee)
     
    if __name__ == "__main__":
     
        app = QApplication(sys.argv)
        form=mainwindow()
        form.show()
        sys.exit(app.exec_())

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    J'ai l'impression que c'est simplement ceci que tu veux faire:
    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
     
    class mainwindow(QMainWindow,Ui_MainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
            self.source = ''
            self.Parcourir1.clicked.connect(self.openfile)
            self.Calculer.clicked.connect(self.calculate)
     
     
        def openfile(self):
            self.source = QFileDialog.getOpenFileName()[0]
            print(self.source)
     
        def calculate(self):
            if self.source:
                e_calculee = self.lineEdit_X.text()
                n_calculee = self.lineEdit_Y.text()
                el_calculee = self.lineEdit_Z.text()
                calcul_gps(self.source, e_calculee, n_calculee, el_calculee)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Effectivement j'avais oublié ce .self plus haut.

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

Discussions similaires

  1. [Drupal] Liaison entre dupal et une base de données personnelle
    Par Sandjabé dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/10/2012, 14h03
  2. [WD10] Liaison entre combo_date et une table de note
    Par bestmoroco dans le forum WinDev
    Réponses: 1
    Dernier message: 23/03/2012, 09h01
  3. liaison entre datagrid et une base de donnée
    Par yamyoung dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/05/2009, 22h51
  4. Réponses: 1
    Dernier message: 22/08/2007, 00h05

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