Visualizzazione dei messaggi di avvio sulla schermata iniziale di QGIS


15

Durante l'avvio di QGIS, nella parte inferiore della schermata di avvio sono presenti messaggi di stato come "ripristino dei plug-in caricati".

Sto usando una funzione startup.py da cui vorrei informare l'utente quale parte del mio script di avvio è attualmente in esecuzione.

È possibile mostrare queste informazioni sulla schermata iniziale?

inserisci qui la descrizione dell'immagine

Edit1:

Come soluzione alternativa sono riuscito a utilizzare la mia schermata iniziale durante l'avvio:

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()

Pertanto ho inserito la schermata iniziale nella mia cartella qgis-python (ad esempio https://github.com/webgeodatavore/qgis-splash-screens-birthday/raw/master/resized/qgis_version_2.18.png )

inserisci qui la descrizione dell'immagine

Ma questa soluzione è un po 'una soluzione rapida e sporca.

Non è possibile accedere allo splashscreen creato durante l'avvio dell'app QGIS? Ho provato ad accedere utilizzando QgsApplication.instance().findChild(QSplashScreen)ma non riesco ad accedervi.

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

Risposte:


3

Ho trovato un'altra soluzione (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

Attiva anche il mio plugin, mostra per un breve periodo lo splasher originale (suppongo sia giusto) e quindi lo splasher personalizzato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.