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

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é.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.