Hiển thị thông báo khởi động trên màn hình giật gân của QGIS


15

Trong quá trình khởi động của QGIS, có các thông báo trạng thái được hiển thị ở phần dưới của màn hình giật gân như "khôi phục các plugin đã tải".

Tôi đang sử dụng một tính năng khởi động từ đó tôi muốn thông báo cho người dùng biết phần nào của tập lệnh khởi động của tôi được thực thi tại thời điểm này.

Có thể hiển thị thông tin này trên màn hình?

nhập mô tả hình ảnh ở đây

Chỉnh sửa1:

Như một giải pháp thay thế, tôi đã quản lý để sử dụng màn hình giật gân của riêng mình trong khi khởi động:

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

Do đó, tôi đặt màn hình giật gân vào thư mục qgis-python của mình (ví dụ: https://github.com/webgeodatavore/qgis-Station-sc Greens-bapt / tôm / master / resource / qgis_version_2.18.png )

nhập mô tả hình ảnh ở đây

Nhưng giải pháp này là một cách giải quyết nhanh chóng và bẩn thỉu.

Không thể có quyền truy cập vào màn hình giật gân được tạo trong quá trình khởi động ứng dụng QGIS? Tôi đã cố gắng truy cập bằng cách sử dụng QgsApplication.instance().findChild(QSplashScreen)nhưng không thể truy cập được.

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

Câu trả lời:


3

Tôi đã tìm ra một giải pháp khác (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

Nó cũng kích hoạt plugin của tôi, hiển thị trong một thời gian ngắn trình tách dữ liệu gốc (tôi đoán, đó là công bằng) và sau đó là trình phân tách tùy chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.