কিউজিআইএস স্প্ল্যাশস্ক্রিনে স্টার্টআপ বার্তা দেখানো হচ্ছে


15

কিউজিআইএস শুরুর সময় স্প্ল্যাশস্ক্রিনের নীচের অংশে "লোড হওয়া প্লাগইনগুলি পুনরুদ্ধার করা" এর মতো স্থিতি বার্তা প্রদর্শিত হয়।

আমি একটি স্টার্টআপ.পি বৈশিষ্ট্য ব্যবহার করছি যা থেকে আমি ব্যবহারকারীকে আমার সূচনা স্ক্রিপ্টের কোন অংশটি এই মুহুর্তে কার্যকর করা হবে তা জানাতে চাই।

স্প্ল্যাশস্ক্রিনে এই তথ্যটি দেখানো সম্ভব?

এখানে চিত্র বর্ণনা লিখুন

Edit1:

একটি workaround হিসাবে আমি শুরু করার সময় আমার নিজের স্প্ল্যাশস্ক্রিন ব্যবহার করতে পরিচালিত:

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

সুতরাং আমি আমার কিগিস-পাইথন ফোল্ডারে স্প্ল্যাশস্ক্রিন রেখেছি (উদাহরণস্বরূপ https://github.com/webgeodatavore/qgis-splash-screens-birthday/raw/master/resized/qgis_version_2.18.png )

এখানে চিত্র বর্ণনা লিখুন

তবে এই সমাধানগুলি কিছুটা দ্রুত এবং নোংরা কাজ।

কিউজিআইএস অ্যাপ্লিকেশন শুরুর সময় যে স্প্ল্যাশস্ক্রিনটি তৈরি হয়েছিল তাতে কি অ্যাক্সেস পাওয়া সম্ভব নয়? আমি ব্যবহার করে অ্যাক্সেস পাওয়ার চেষ্টা করেছিলাম 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

এটি আমার প্লাগিনটিও সক্রিয় করে, অল্প সময়ের জন্য আসল স্প্ল্যাশারটি দেখায় (আমার ধারণা, এটি ন্যায্য) এবং তারপরে কাস্টমাইজড স্প্ল্যাশার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.