Mostrar mensajes de inicio en la pantalla de bienvenida de QGIS

15

Durante el inicio de QGIS, se muestran mensajes de estado en la parte inferior de la pantalla de bienvenida, como "restaurar complementos cargados".

Estoy usando una función startup.py desde la cual me gustaría informarle al usuario qué parte de mi script de inicio se ejecuta en este momento.

¿Es posible mostrar esta información en la pantalla de bienvenida?

ingrese la descripción de la imagen aquí

Editar1:

Como solución, logré usar mi propia pantalla de inicio durante el inicio:

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

Por lo tanto, puse la pantalla de bienvenida en mi carpeta qgis-python (por ejemplo https://github.com/webgeodatavore/qgis-splash-screens-birthday/raw/master/resized/qgis_version_2.18.png )

ingrese la descripción de la imagen aquí

Pero esta solución es una solución un poco rápida y sucia.

¿No es posible obtener acceso a la pantalla de bienvenida creada durante el inicio de la aplicación QGIS? Intenté obtener acceso usando QgsApplication.instance().findChild(QSplashScreen)pero no pude acceder a él.

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

Markgraeflerland
fuente

Respuestas:

3

Descubrí otra solución (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

También activa mi complemento, muestra por un corto tiempo el salpicador original (supongo, eso es justo) y luego el salpicador personalizado.

El conejo
fuente