Affichage des messages de démarrage sur l'écran de démarrage de QGIS

15

Lors du démarrage de QGIS, il y a des messages d'état affichés dans la partie inférieure de l'écran de démarrage comme "restaurer les plugins chargés".

J'utilise une fonction startup.py à partir de laquelle je voudrais informer l'utilisateur de la partie de mon script de démarrage qui est exécutée en ce moment.

Est-il possible d'afficher ces informations sur l'écran de démarrage?

entrez la description de l'image ici

Edit1:

Pour contourner ce problème, j'ai réussi à utiliser mon propre écran de démarrage lors du démarrage:

from qgis.gui import *
from qgis.utils import *
from qgis.core import *
from PyQt4.QtGui import *
from qgis.PyQt.QtCore import QSettings, Qt
import time


template=QgsApplication.qgisSettingsDirPath() + "python/"
app=QgsApplication.instance()
splash_pix = QPixmap(template+'splashscreen.png')

splash = QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint)
splash.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
splash.setEnabled(False)

splash.setMask(splash_pix.mask())

progressBar = QProgressBar(splash)
progressBar.setMaximum(10)
progressBar.setGeometry(0, splash_pix.height() - 20, splash_pix.width(), 10)

splash.show()

if QgsApplication.instance().findChild(QSplashScreen):
    QgsMessageLog.logMessage("ja", "gridseen", level=QgsMessageLog.INFO)
else:
    QgsMessageLog.logMessage("nein", "gridseen", level=QgsMessageLog.INFO)

splash.showMessage("<h1><font color='white'>Grid Integration-Check!</font></h1>", Qt.AlignBottom | Qt.AlignCenter, Qt.black)

for i in range(1, 11):
    progressBar.setValue(i)
    t = time.time()
    while time.time() < t + 0.1:
        app.processEvents()

time.sleep(2)
splash.close()

Par conséquent, j'ai mis l'écran de démarrage dans mon dossier qgis-python (par exemple https://github.com/webgeodatavore/qgis-splash-screens-birthday/raw/master/resized/qgis_version_2.18.png )

entrez la description de l'image ici

Mais cette solution est un peu une solution de contournement rapide et sale.

N'est-il pas possible d'accéder à l'écran de démarrage créé lors du démarrage de l'application QGIS? J'ai essayé d'y accéder en utilisant QgsApplication.instance().findChild(QSplashScreen)mais je n'ai pas pu y accéder.

https://github.com/qgis/QGIS/blob/7bd0285dfdef9456a5929a7b7031270ea0ee2601/src/app/main.cpp#L1286

Markgraeflerland
la source

Réponses:

3

J'ai trouvé une autre solution (QGIS 3.4): startup.py

from PyQt5.QtCore import QSettings,QStandardPaths
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QLabel, QWidget, QSplashScreen,QApplication
import os

try:
    s = QSettings()
    s.setValue("PythonPlugins/BufferSelection",True)
except: pass

try:
    widgets= QApplication.allWidgets()
    for wid in widgets:
        if isinstance(wid, QSplashScreen):
            qgisAppDataPath= QStandardPaths.standardLocations(QStandardPaths.AppDataLocation)[0]
            file = os.path.join(qgisAppDataPath,"splash.png")
            if os.path.isfile(file):
                pixmap = QPixmap(file)
                wid.setPixmap(pixmap)
                app.processEvents()
            break
except: pass

Il active également mon plugin, montre pendant une courte période le splasher d'origine (je suppose, c'est juste) puis le splasher personnalisé.

Le lapin
la source