Итак, в настоящее время я работаю над плагином QGIS Python, и я хочу обновить QDialog с выводом текста, пока выполняется импорт данных из одного файла, а другой выполняется.
Итак, пока он захватывает данные из один файл и вставив его в другой, я хочу, чтобы мой вывод в диалоговом окне тоже выглядел так:
Importing WMS: connection-wms/example/url: abc.com...
Importing WMS: connection-wms/example2/url: abc.com...
Importing WFS: connection-wms/example3/url: abc.com...
и так далее ...
Моя проблема в том, что когда я вызываю exec_ () в диалоговом окне все остальное замирает, как будто оно ждет, пока диалог что-то сделает. Когда я закрываю диалоговое окно, импорт выполняется должным образом.
Я уже пробовал QCoreApplication.processEvents (), но почему-то не могу заставить его работать.
Моя текущая попытка - запустить диалоговое окно в собственный поток, но с потоком из библиотеки потоков, похоже, это не работает.
Вот лог c действия импорта:
class DatasourceDistributor:
def importSources(self):
self.dialog = ProgressLog()
self.dialog.exec_()
self.dictionaryOfCheckedSources = {**self.dictionaryOfCheckedDataBaseSources,
**self.dictionaryOfCheckedWebSources}
if self.dictionaryOfCheckedSources:
self.parser.clear()
self.parser.read(self.sourceQgisIniFile)
targetParser = configparser.ConfigParser()
targetParser.optionxform = str
targetParser.read(self.targetQgisIniFile)
for key in self.dictionaryOfCheckedSources:
iterator = 0
if key in self.availableWebSources:
if self.parser.has_section('qgis'):
for element in range(len(self.dictionaryOfCheckedWebSources[key])):
self.importWebSources(iterator, key, targetParser)
iterator += 1
else:
for element in range(len(self.dictionaryOfCheckedDataBaseSources[key])):
self.importDBSources(iterator, key, targetParser)
iterator += 1
with open(self.targetQgisIniFile, 'w') as qgisconf:
targetParser.write(qgisconf)
self.profileManager.updateDataSources()
Я загружаю диалог с текст в другом для l oop в self.importWebSources (iterator, key, targetParser)
А вот класс диалога:
class ProgressLog(QDialog):
def __init__(self, *args, **kwargs):
super(ProgressLog, self).__init__(*args, **kwargs)
self.setWindowTitle("Importing Datasources...")
self.setFixedHeight(300)
self.setFixedWidth(500)
self.layout = QVBoxLayout()
self.progesslog = QTextBrowser()
self.layout.addWidget(self.progesslog)
self.setLayout(self.layout)
Имейте в виду, что это мой первый контакт с плагинами Qgis, а также с Python
Спасибо!