Mehr

QFileDialog bleibt nach der Auswahl geöffnet


Ich habe ein QGIS-Plugin erstellt, um eine tabulatorgetrennte Wertedatei zu importieren, mit:

filename = QFileDialog.getOpenFileName(self.dlg, "Datei zum Importieren auswählen", Pfad, '*.*') uri="file:///"+filename+"?"+"delimiter=%s&xField=%s&yField=% s"%("	", "Raster-Ostwert festlegen", "Raster-Nordwert festlegen") vlayer = QgsVectorLayer(uri, "SpreadTests", "delimitedtext") QgsMapLayerRegistry.instance().addMapLayer(vlayer)

Es funktioniert wie erwartet, außer dass das Dialogfeld zum Auswählen der Datei geöffnet bleibt, nachdem eine Auswahl getroffen wurde. Mache ich etwas falsch? oder muss ich noch etwas hinzufügen?


Sie mischen den Slot-Funktionscode mit dem für ein Ergebnis erforderlichen Code. Das ist das Problem.

Zum Beispiel habe ich ein beliebiges Plugin zum 'Öffnen von Dateien' erstellt. Nächster ausgeschnittener Code, at,__drin__Methode, ist für die Taste, um sich mit dem Steckplatz zu verbinden, wo sich die . befindet QDateiDialog:

… def __init__(self, iface): """Konstruktor… #QFileDialog für geöffnete Datei self.dlg.lineEdit.clear() self.dlg.pushButton.clicked.connect(self.select_open_file)…

Aus Konventionsgründen wird die Slot-Funktion vor der run-Methode platziert:

… def select_open_file(self): filename = QFileDialog.getOpenFileName(self.dlg, "Datei zum Importieren auswählen", "", '*.*') self.dlg.lineEdit.setText(filename) def run(self): " ""Run-Methode, die die ganze eigentliche Arbeit ausführt"""…

wenn Ergebnis:

… wenn Ergebnis: # Tun Sie hier etwas Nützliches - löschen Sie die Zeile mit pass und # ersetzen Sie sie durch Ihren Code. filename = self.dlg.lineEdit.text() print filename

Das "etwas Nützliche hier" ist zu drucken Datei öffnen aber in Ihrem Fall müssen Sie den Code eingeben.

uri="file:///"+filename+"?"+"delimiter=%s&xField=%s&yField=%s"%("	", "Raster-Ostwert festlegen", "Raster-Nordwert festlegen") vlayer = QgsVectorLayer( uri, "SpreadTests", "delimitedtext") QgsMapLayerRegistry.instance().addMapLayer(vlayer)

Bei mir funktioniert es, wie Sie auf den nächsten Bildern sehen können:

Auswahl der Eingabedatei:

Nachdem Sie auf 'Öffnen' geklickt haben, QDateiDialog war geschlossen und die Pfad des Shapefiles wurde dem . hinzugefügt QLineBearbeiten:

Nachdem Sie auf OK geklickt haben, wird der Name von Dateiname wurde in der Python-Konsole gedruckt.