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 :

Afficher une QFileDialog comme widget


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut Afficher une QFileDialog comme widget
    Bonjour,

    je voudrais utiliser une sorte de QFileDialog dans mon logiciel.

    je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SelectFile = QFileDialog(self, Qt.Widget)
    self.ui.output_widget.addWidget(SelectFile)
    qui fonctionne bien puisque cela affiche ce que je veux mais le probleme est que cela affiche également une QFileDialog externe.

    un screenshot pour aider à comprendre.
    Nom : QFileDialog.png
Affichages : 369
Taille : 112,4 Ko

    Si je ferme la fenetre, elle disparait aussi de mon logiciel.
    Pour ça, avec un installevent ca devrait aller.

    Mais comment faire pour ne pas afficher la fenetre externe ?!

    merci.
    Sous Kubuntu 20.04

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Bonjour

    en jouant avec les flags sur le widget?
    SelectFile.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.WindowTitleHint | QtCore.Qt.CustomizeWindowHint )

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    nop, pas de changement.
    Sous Kubuntu 20.04

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    en fait il fallait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectFile.setOption(QFileDialog.DontUseNativeDialog)
    Mais maintenant je suis confronté à un autre soucis, dés que je sélectionne un fichier, le "widget" disparaît.

    Du coup j'ai installé un EventFiltrer mais même ainsi, impossible de l’empêcher de se fermer ?!

    J'ai bloqué tous les events pour ce "widget" mais rien n'y fait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            SelectFile = QFileDialog(self.ui.widget, Qt.Widget)
            SelectFile.setObjectName("SelectFile")
            SelectFile.setOption(QFileDialog.DontUseNativeDialog)
            SelectFile.installEventFilter(self)
            self.ui.output_widget.addWidget(SelectFile)
     
        def eventFilter(self, Watched, Event):
            if Event.type() in [43]:
                return False
            else:
                Event.ignore()
                return True
    Une idée ?

    Merci
    Sous Kubuntu 20.04

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    bizarre l'affaire des flags... du moins ca fonctionne sous win

    en captant la méthode done du QFileDialog?

    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
     
    # -*- coding: utf-8 -*-
    from PyQt4 import QtGui,QtCore,QtSql
    import os
    import sys
     
    class monWidg(QtGui.QWidget):
      def __init__(self, parent=None):
        super(monWidg, self).__init__(parent)
        self.parent = parent
        self.setLayout(QtGui.QVBoxLayout())
        gBox1 = QtGui.QGroupBox('1')
        gBox1.setFixedHeight(100)
        gBox2 = QtGui.QGroupBox('2')
        gBox2.setFixedHeight(200)
        wfile = QtGui.QFileDialog()
        wfile.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.WindowTitleHint | QtCore.Qt.CustomizeWindowHint  )
        wfile.done = self.doneNo
        self.layout().addWidget(gBox1)
        self.layout().addWidget(gBox2)
        self.layout().addWidget(wfile)
     
      def doneNo(self, result=None):
        print result
     
    app=QtGui.QApplication(sys.argv)
    ui= monWidg()    
    ui.show()
    sys.exit(app.exec_())

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    C'est parfait ainsi !

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            self.SelectFile = QFileDialog(self.ui.widget, Qt.Widget)
            self.SelectFile.setObjectName("SelectFile")
            self.SelectFile.setOption(QFileDialog.DontUseNativeDialog)
            self.SelectFile.installEventFilter(self)
            self.SelectFile.done = self.doneNo
            self.SelectFile.currentChanged.connect(self.doneNo)
            self.ui.output_widget.addWidget(self.SelectFile)
     
        def doneNo(self, Value):
            if isinstance(Value, str):
                print(Value)
    Sous Kubuntu 20.04

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

Discussions similaires

  1. Afficher une image comme composant
    Par Michel Deriaz dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 09/03/2011, 20h26
  2. comment afficher une image comme arriér-plan?
    Par youssef_66_80 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/05/2008, 01h00
  3. Afficher une image comme carte 2D
    Par Haywire dans le forum OpenGL
    Réponses: 14
    Dernier message: 18/03/2008, 23h17
  4. Réponses: 5
    Dernier message: 29/10/2007, 08h42
  5. [D7] StringGrid afficher une colonne comme 1e colonne visibl
    Par raoulmania dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/12/2005, 14h23

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