Я только что закодировал заставку в моем приложении PyQt, чтобы показать изображение перед запуском. Я использовал QSplashscreen. Проблема заключается в том, что изображение отображается, скажем, раз в 20 раз. В других случаях отображается серый прямоугольник istead. Скриншоты обоих случаев:Почему QSplashscreen не всегда работает?
ли работа: http://dl.getdropbox.com/u/1088961/prob2.jpg
Не работает: http://dl.getdropbox.com/u/1088961/prob1.jpg
Я попытался отложить начало окна, но если изменения серы прямоугольника в картину он как раз перед исчезающим (даже если я задержать все 10 секунд).
Это мой код:
# -*- coding: utf-8 -*-
import sys
from time import time, sleep
from PyQt4.QtGui import QApplication, QSplashScreen, QPixmap
from gui.gui import MainWindow
def main():
app = QApplication(sys.argv)
start = time()
splash = QSplashScreen(QPixmap("aquaticon/images/splash_screen.jpg"))
splash.show()
if time() - start < 1:
sleep(1)
win = MainWindow()
splash.finish(win)
win.show()
app.exec_()
if __name__ == "__main__":
main()
Я использую Debian Linux с Fluxbox (но это то же самое в Gnome).
Спасибо, теперь все работает нормально :) – daniel90
Обратите внимание, что QSplashScreen имеет довольно плохой баг что означает, что вы просто получаете серый прямоугольник, если у вас нет основного цикла: https://bugreports.qt-project.org/browse/QTBUG-24910 – xioxox