web-dev-qa-db-fra.com

Widget de sélection de fichier PyQt4

Je veux créer une boîte de dialogue QT4 (en utilisant le concepteur QT), qui contient une partie où un fichier doit être sélectionné.

Maintenant, je sais que QFileDialog existe et je peux programmer quelque chose qui fait ce que je veux. Mais puis-je également le faire dans le concepteur QT?

Existe-t-il un moyen d'obtenir un widget "sélection de fichier" dans QT Designer? Ou, je me souviens de ces boutons, ayant le fichier sélectionné comme titre et une petite flèche permettant à l'utilisateur de sélectionner un autre fichier par le QFileDialog?

Y a-t-il donc une solution toute faite ou dois-je la programmer moi-même?

21
Nathan

Pour autant que je sache, aucune boîte de dialogue de fichier n'est disponible à partir du concepteur Qt. Mais vous pouvez facilement le faire avec quelques lignes de code.

En supposant que vous disposez d'un simple bouton appelé pushButton et que le chemin d'accès doit être stocké dans lineEdit.

def selectFile():
    lineEdit.setText(QFileDialog.getOpenFileName())

pushButton.clicked.connect(selectFile)

[edit] Je me demande cependant si vous utilisez KDE par hasard? Si c'est le cas, vous pouvez utiliser le KUrlRequester pour cela. Il peut facilement être configuré pour prendre en charge n'importe quoi, des fichiers aux URL en passant par les répertoires.

34
Wolph

QFileDialog existe dans QtGui. Au moins dans ma version 4.4 et probablement beaucoup plus tôt aussi. Je pense que la raison pour laquelle il n'est pas dans Designer est qu'il ouvre sa propre fenêtre au lieu d'être un widget à placer sur une autre fenêtre.

La documentation de QTDesigner pourrait être meilleure et au moins un indice de son existence.

Instanciez-le et exécutez la commande show. Il vient tout droit et prend par défaut /.

import QtGui
self.fileDialog = QtGui.QFileDialog(self)
self.fileDialog.show()
13
Vicky T

Vous pouvez utiliser la méthode getOpenFileName () dans la classe QFileDialog.

QFileDialog.getOpenFileName () renverra le chemin du fichier et le type de fichier sélectionné

J'ai obtenu ceci: ('C: /Users/Sathsara/Desktop/UI/Test/test.py', 'All Files (*)')

Pour obtenir uniquement le chemin du fichier, utilisez QFileDialog.getOpenFileName () [0]


Exemple de code:

def selectFile():
   print(QFileDialog.getOpenFileName()[0])


dlg.locationBtn.clicked.connect(selectFile)
2
Sathsara AM