QGIS 스플래시 화면에 시작 메시지 표시


15

QGIS를 시작하는 동안 스플래시 화면의 아래쪽에 "로드 된 플러그인 복원"과 같은 상태 메시지가 표시됩니다.

시작 스크립트의 어느 부분이 현재 실행되고 있는지 사용자에게 알리는 startup.py 기능을 사용하고 있습니다.

스플래시 화면에이 정보를 표시 할 수 있습니까?

여기에 이미지 설명을 입력하십시오

편집 1 :

해결 방법으로 시작하는 동안 자체 스플래시 화면을 사용했습니다.

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

따라서 스플래시 화면을 qgis-python 폴더에 넣습니다 (예 : https://github.com/webgeodatavore/qgis-splash-screens-birthday/raw/master/resized/qgis_version_2.18.png )

여기에 이미지 설명을 입력하십시오

그러나이 솔루션은 약간 빠르고 더러운 해결 방법입니다.

QGIS 앱을 시작하는 동안 생성 된 스플래시 화면에 액세스 할 수 없습니까? 사용하여 액세스를 시도했지만 액세스 QgsApplication.instance().findChild(QSplashScreen)할 수 없습니다.

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

답변:


3

다른 솔루션 (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

또한 플러그인을 활성화하고 원래 splasher (공평한 것 같습니다)와 사용자 정의 splasher를 잠시 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.