Bonjour bonjour,

Voila je m'autoforme a PyQt, et j'ai quelques questions dont ej n'ai aps vraiment trouvé de réponse claires sur le net.

je voudrais tout simplement faire une ouverture de fichier.

Je défini donc une class mafenetre.
dans cette fenêtre je mets un pushbutton "parcourir" qui lorsqu'il est cliqué, ouvre une nouvelle fenêtre qui est un QFileDialog().

Au niveau du connect j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
QObject.connect(self.parcourir, SIGNAL("clicked()"), self.ouvrirnavig)
ouvrirnavig lance donc le QFiledialog.

sauf que je veux récupérer le chemin du fichier ouvert.
Donc a l'heure actuelle pour ca, je passe par une variable globale, mais ca me plait pas trop...

Et surtout le problème c'est que je voudrais lancer quelque chose derrière ce connect, mais une fois que le fichier est sélectionné.

Donc j'essaye de capter le signal envoyé par QFileDialog : FileSelected.
Sauf que ca marche pas, cette connection est à True meme si je n'ai pas encore clické sur le bouton parcourir...

Mon code dans l'etat actuel (j'ai essayé avec accepted ou FileSelected, ca revient au meme.) :
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
 
class maFenetre(QWidget):
    global chemin_fichier
    chemin_fichier=""
    def __init__(self):
        super(maFenetre,self).__init__()
        global chemin_fichier
        chemin_fichier=""
        self.resize(300,300)
        self.objet = QFileDialog()
        txt = QLabel("Bonjour \nSelectionnez la manip a lancer :",self)
        self.parcourir = QPushButton("Parcourir",self)
        self.parcourir.move(150,150)
        self.run()
 
    def run(self):
        test = False
        QObject.connect(self.parcourir, SIGNAL("clicked()"), self.ouvrirnavig)
        test = QObject.connect(self.objet, SIGNAL("accepted()"), self.rien)
        print test
 
    def ouvrirnavig(self):
        global chemin_fichier
        self.objet.setWindowFlags(Qt.WindowSystemMenuHint)
        chemin_fichier = str(self.objet.getOpenFileName(QWidget(), QString(), QString("/home/Work/tscope"), QString("*.c")))       
        print "ouvrir :" + chemin_fichier
 
    def rien(self):
        print "on passe dans rien"
En sorti j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
True
ouvrir :blablabla
donc le signal accepted est bien capté, mais par contre ca lance pas "rien"
Donc la question est pourquoi je capte le accepted avant d'avoir choisi mon fichier et comment faire pour que le programme attende ce signal pour continuer ? (autrement que par un while signal pas recu ) :

Au passage si vous voyez des aberrations au niveau de l'utilisation des self, je suis preneur de conseils aussi.