1. A propos de la classe QFileDialog PyQt5
La classe QFileDialog dans PyQt5 est utilisée pour afficher une boîte de dialogue permettant à l'utilisateur de sélectionner des fichiers ou des répertoires à partir du système de fichiers. Cela peut être utile dans de nombreuses applications PyQt5 qui nécessitent l'interaction avec les fichiers de l'ordinateur.
2. Exemples d'usages de la classe QFileDialog PyQt5
2.1 Exemple simple d'usage de la classe QFileDialog
Dans cet exemple, nous allons créer une fonction openFileDialog() pour ouvrir la boîte de dialogue de fichier. Nous créeons ensuite une application QApplication, une fenêtre QWidget et un bouton pour ouvrir la boîte de dialogue. Ensuite nous allons connecter le signal clicked du bouton à la fonction openFileDialog().
Exemple (En utilisant le dialog système natif)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import sys, os from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QFileDialog def openFileDialog(): options = QFileDialog.Options() fileName, _ = QFileDialog.getOpenFileName(None, "Ouvrir un fichier", "", "Tous les fichiers (*);;Python Files (*.py);; Text File (*.txt) ", options=options) if fileName: print("Fichier sélectionné:", fileName) # ouvrir le fichier sélectionné os.startfile(fileName) app = QApplication(sys.argv) window = QWidget() window.setGeometry(100, 100, 400, 200) button = QPushButton("Ouvrir un fichier", window) button.setGeometry(100, 50, 150, 30) button.clicked.connect(openFileDialog) window.show() sys.exit(app.exec_()) |
En exécutant le code ci-dessus, vous obtenez la fenêtre suivante:
Et en cliquant sur le bouton ouvrir un fichier, vous obtenez la boite de dialogue qui vous permetrra de sélectionner le fichier à ouvrir:
2.2 Exemple en utilisant le dialogue de fichier PyQt5
Exemple ( avec le dialogue de fichier PyQt5)
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 |
import sys, os from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog # Création d'une fonction pour ouvrir la boîte de dialogue de fichier def openFileDialog(): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog # Utilise le dialogue de fichier PyQt5 plutôt que le dialogue système natif fileName, _ = QFileDialog.getOpenFileName(None, "Ouvrir un fichier", "", "Tous les fichiers (*);;Python Files (*.py)", options=options) if fileName: print("Fichier sélectionné:", fileName) # ouvrir le fichier sélectionné os.startfile(fileName) # Création de l'application app = QApplication(sys.argv) # Création d'une fenêtre principale window = QWidget() window.setWindowTitle("QFileDialog Example") window.setGeometry(100, 100, 300, 150) # Création d'un bouton pour ouvrir la boîte de dialogue button = QPushButton("Ouvrir un fichier", window) button.setGeometry(50, 50, 200, 30) button.clicked.connect(openFileDialog) # Affichage de la fenêtre window.show() # Exécution de l'application sys.exit(app.exec_()) |
3. La classe QFileDialog selon l'approche objet
Selon l'approche objet, la méthode d'usage de la classe QFileDialog est la même que celle que nous avons présenté ci-dessus sauf la sysntaxe qui va être basé sur l'approche objet:
Exemple (selon l'approche objet)
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 |
class FileDialogExample(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QFileDialog Example") self.setGeometry(100, 100, 400, 200) self.initUI() def initUI(self): self.button = QPushButton("Ouvrir la boîte de dialogue", self) self.button.setGeometry(50, 50, 300, 50) self.button.clicked.connect(self.openFileDialog) def openFileDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog # Utilise le dialogue de fichier PyQt5 plutôt que le dialogue système natif fileName, _ = QFileDialog.getOpenFileName(self, "Ouvrir un fichier", "", "Tous les fichiers (*);;Python Files (*.py)", options=options) if fileName: print("Fichier sélectionné:", fileName) if __name__ == "__main__": app = QApplication(sys.argv) window = FileDialogExample() window.show() sys.exit(app.exec_()) |
4. Liste des méthodes et attributs associés à la classe QFileDialog
La classe QFileDialog de PyQt5 fournit plusieurs méthodes et attributs pour interagir avec les dialogues de fichiers. Nous vous donnons ici une liste partielle des méthodes et attributs disponibles dans la classe QFileDialog. Pour une liste complète, vous pouvez consulter la documentation officielle de PyQt5. Voici une liste des méthodes et attributs les plus couramment utilisés :
Méthodes :
- getOpenFileName(parent, caption, directory, filter, options): Affiche un dialogue de fichier permettant à l'utilisateur de sélectionner un fichier à ouvrir. Renvoie le nom du fichier sélectionné et le filtre de fichiers sélectionné.
- getSaveFileName(parent, caption, directory, filter, options): Affiche un dialogue de fichier permettant à l'utilisateur de sélectionner un fichier où enregistrer. Renvoie le nom du fichier sélectionné et le filtre de fichiers sélectionné.
- setFileMode(mode): Définit le mode du dialogue de fichier (Fichier unique, Fichiers multiples, Répertoire ou Répertoires multiples).
- setFilter(filter): Définit les filtres de fichiers disponibles dans le dialogue.
- setDefaultSuffix(suffix): Définit le suffixe de fichier par défaut pour les noms de fichier générés automatiquement.
- setDirectory(directory): Définit le répertoire initial affiché dans le dialogue de fichier.
- setOption(option, on): Active ou désactive une option spécifique pour le dialogue de fichier.
Attributs :
- Accepted: Constante indiquant que l'utilisateur a appuyé sur le bouton "Accepter" dans le dialogue de fichier.
- Rejected: Constante indiquant que l'utilisateur a appuyé sur le bouton "Annuler" dans le dialogue de fichier.
- DontUseNativeDialog: Option indiquant d'utiliser le dialogue de fichier de PyQt5 plutôt que le dialogue système natif.
- ReadOnly: Mode indiquant que le dialogue de fichier doit afficher uniquement les fichiers en lecture seule.
- HideNameFilterDetails: Option indiquant de masquer les détails du filtre de fichiers dans le dialogue de fichier.
Younes Derfoufi
CRMEF OUJDA