2014-11-17 1 views
0

코드 실행 중에 팝업 위젯을 표시하고 실행이 끝나면 파기하려고합니다.스플래시 화면 표시

from PySide import QtGui, QtCore 
import sys 
import time 
def spinner(fn): 
    def wrapper(*args, **kwargs): 
     cls = args[0] 
     splash = QtGui.QWidget (cls) 
     splash.setWindowFlags(QtCore.Qt.FramelessWindowHint) 

     rect = cls.rect() 
     # rect.setTop (rect.height()-50) 
     splash.setGeometry(rect) 
     palette = QtGui.QPalette() 
     palette.setColor(QtGui.QPalette.Background, QtGui.QColor(0,0,0,150)) 
     splash.setAutoFillBackground(True) 
     splash.setPalette(palette) 
     splash.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents) 
     splash.show() 

     fn(*args, **kwargs) 

     splash.destroy() 
    return wrapper 
@spinner 
def action (w): 
    time.sleep (10) 

def main(): 
    app = QtGui.QApplication (sys.argv) 
    w = QtGui.QDialog() 
    l = QtGui.QHBoxLayout(w) 
    b = QtGui.QPushButton ('Hello world') 
    l.addWidget (b) 
    b.clicked.connect(lambda :action(w)) 
    w.show() 

    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main() 

하지만 스플래시는 끝에 만 나타납니다. 해결 방법이 있습니까?

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

time.sleep(2) 

... 

이 투명 부품 화상을 포함하는 시작 화면을 표시하고 2 초 잔 ​​: 건배

+0

Qt에게 GUI를 업데이트 할 수있는 기회를주기 위해 스플래시 화면을 표시 한 후'QApplication.processEvents()'를 호출하십시오. –

답변

2

Qt는 관리 시작 화면을 간단하게 QSplashScreen 클래스를 갖는다.

관련 문제