QSplashScreen在PyQt4中无法正常工作

时间:2017-01-08 03:42:36

标签: python pyqt pyqt4

我尝试使用QSplashScreen制作启动画面,但图像显示不正确。

spalsh屏幕工作(balnk),但是splash_loading.png没有显示。

此代码来自在线教程:

from PyQt4.QtCore import *
from PyQt4.QtGui import *


class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.browser = QTextBrowser()
        self.setWindowTitle('Just a dialog')
        self.lineedit = QLineEdit("Write something and press Enter")
        self.lineedit.selectAll()
        layout = QVBoxLayout()
        layout.addWidget(self.browser)
        layout.addWidget(self.lineedit)
        self.setLayout(layout)
        self.lineedit.setFocus()
        self.connect(self.lineedit, SIGNAL("returnPressed()"),
                 self.update_ui)

    def update_ui(self):
        self.browser.append(self.lineedit.text())


if __name__ == "__main__":
    import sys, time

    app = QApplication(sys.argv)


    splash_pix = QPixmap('splash_loading.png')
    splash = QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint)
    splash.setMask(splash_pix.mask())
    splash.show()
    app.processEvents()

    # Simulate something that takes time
    time.sleep(2)

    form = Form()
    form.show()
    splash.finish(form)
    app.exec_()

Splash Screen pyqt blank

1 个答案:

答案 0 :(得分:4)

你不应该使用睡眠,你必须处理所有事件。将app = ...form = Form()之间的行替换为:

start = time.time()
splash = QSplashScreen(QPixmap("screen.png"),  Qt.WindowStaysOnTopHint)
splash.show()
while time.time() - start < 2:
    time.sleep(0.001)
    app.processEvents()

enter image description here