QGIS स्प्लैशस्क्रीन पर स्टार्टअप-संदेश दिखा रहा है


15

QGIS के स्टार्टअप के दौरान स्प्लैशस्क्रीन के निचले हिस्से में "लोड किए गए प्लगिन को पुनर्स्थापित करना" जैसे स्टेटस मैसेज दिखाए गए हैं।

मैं एक स्टार्टअप-थ्रू फीचर का उपयोग कर रहा हूं जिससे मैं उपयोगकर्ता को सूचित करना चाहूंगा कि मेरी स्टार्टअप स्क्रिप्ट का कौन सा हिस्सा इस समय निष्पादित किया गया है।

क्या इस जानकारी को स्प्लैशस्क्रीन पर दिखाना संभव है?

यहाँ छवि विवरण दर्ज करें

Edit1:

वर्कअराउंड के रूप में मैं स्टार्टअप के दौरान अपने स्वयं के स्प्लैशस्क्रीन का उपयोग करने में कामयाब रहा:

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) का पता चला: स्टार्टअपहोम

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

यह मेरे प्लगइन को सक्रिय करता है, थोड़े समय के लिए दिखाता है मूल स्प्लैशर (मुझे लगता है, यह उचित है) और फिर अनुकूलित स्प्लैशर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.