Выбор файла по кнопке в plugin qgis
Для плагина qgis необходимо чтобы по кнопке pushButton открывалось окно для выбора файла (например area.shp), после клика по файлу в поле lineEdit нужно чтобы отображался путь к нему, например /home/userName/docs/area.shp.
from qgis.PyQt.QtWidgets import QFileDialog
def run(self):
# Run method that loads and starts the plugin
if not self.pluginIsActive:
self.pluginIsActive = True
print("** STARTING ClassName")
# dockwidget may not exist if:
# first run of plugin
# removed on close (see self.onClosePlugin method)
if self.dockwidget == None:
# Create the dockwidget (after translation) and keep reference
self.dockwidget = ClassNameDockWidget()
# connect to provide cleanup on closing of dockwidget
self.dockwidget.closingPlugin.connect(self.onClosePlugin)
# show the dockwidget
# TODO: fix to allow choice of dock location
self.iface.addDockWidget(Qt.TopDockWidgetArea, self.dockwidget)
self.dockwidget.show()
def directory():
title = "Select a file"
flags = QFileDialog()
dirpath = QFileDialog.getExistingDirectory(title, '', flags)
print(dirpath)
self.dockwidget.lineEdit.setPlaceholderText(dirpath)
self.dockwidget.pushButton.clicked.connect(directory)
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Вместо строк:
flags = QFileDialog()
dirpath = QFileDialog.getExistingDirectory(title, '', flags)
print(dirpath)
Вставьте вот эти:
# Фильтр нужных файлов
filter = "GIS Files (*.shp)" # убрала <;> потому что с ней питон не видел файлов
# Диалоговое окно выбора файла
filename, _ = QFileDialog.getOpenFileName(None, "Select the gis-file", "./", filter)
# Выводим имя файла и путь к нему, если пользователь нажал кнопку "Принять",
# иначе пустую строку
self.dockwidget.lineEdit.setText(filename)