2016-07-19 21 views
0

Ich mache einen PyQt5-Startbildschirm in PyQt, der einen Countdown innerhalb eines Splash-Bildes erstellt, aber das Skript verhält sich nicht richtig und es hat jedes Mal ein anderes Ergebnis .Wie verwende ich time.sleep und mache jede Sekunde etwas anderes

from PyQt5 import QtGui, QtCore, QtWidgets 
 
from PyQt5.QtGui import QFont, QPixmap 
 
from PyQt5.QtWidgets import QSplashScreen 
 
import os 
 
import sys 
 
import time 
 
from time import sleep 
 

 

 

 
count = [1,2,3,4,5] 
 

 
def Splash(self): 
 
    app.processEvents() 
 
    splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
    font = splash.font() 
 
    font.setPixelSize(16) 
 
    font.setWeight(QFont.Bold) 
 
    splash.setFont(font) 
 
    #splash.showMessage(str(count[0]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
    #splash.show() 
 
    for i in range(0, 10): 
 
     time.sleep(1) 
 
     splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
     splash.showMessage(str(count[0]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
     QtWidgets.QApplication.processEvents() 
 
     splash.show() 
 
     time.sleep(1) 
 
     splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
     splash.showMessage(str(count[1]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
     QtWidgets.QApplication.processEvents() 
 
     splash.show() 
 
     time.sleep(1) 
 
     splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
     splash.showMessage(str(count[2]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
     QtWidgets.QApplication.processEvents() 
 
     splash.show() 
 
     time.sleep(1) 
 
     splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
     splash.showMessage(str(count[3]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
     QtWidgets.QApplication.processEvents() 
 
     splash.show() 
 
     time.sleep(1) 
 
     splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
 
     splash.showMessage(str(count[4]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
 
     QtWidgets.QApplication.processEvents() 
 
     splash.show()

Kurz Bedingungen: Wie verwende ich time.sleep(), und jede Sekunde etwas anderes tun. Irgendwelche Vorschläge?

import time 
 

 

 
for i in range(0, 10): 
 
    time.sleep(1) 
 
    print "1" 
 
    time.sleep(1) 
 
    print "2" 
 
    time.sleep(1) 
 
    print "3" 
 
    time.sleep(1) 
 
    print "4" 
 
    time.sleep(1) 
 
    print "5" 
 

 

Antwort

1

können Sie

import time 

for i in range(0, 10): 
    time.sleep(0) 
    print i 

Oder in Ihrem Beispiel ...

for i in range(0, 10): 
    time.sleep(1) 
    splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
    splash.showMessage(str(count[i]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
    QtWidgets.QApplication.processEvents() 
    splash.show() 

Sie entweder eine bedingte Anweisung in einer Schleife nur verwenden können, bis ich < = 4

for i in range(0, 10): 
    time.sleep(1) 
    splash = QtWidgets.QSplashScreen(QtGui.QPixmap("22.png")) 
    if i <= 4: 
     splash.showMessage(str(count[i]), QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.white) 
    else: 
     QtWidgets.QApplication.processEvents() 
    splash.show() 
+1

die Antwort von dot.PY gemacht tat der Trick thx Sie können entweder eine bedingte Anweisung zu Schleife nur bis i <= 4 –

0

Tut es das, was Sie wollen damit zu tun?

import time 
for i in range(10): 
    time.sleep(1) 
    print(i) 
    time.sleep(1) 
    print("New command; Iteration:", i) 
    time.sleep(1) 
    print("New new command; Iteration:", i) 
+0

ist es nicht.Ich möchte jede Sekunde einen Begrüßungsbildschirm aufrufen Jede Sekunde wird eine andere Nummer gedruckt. yor code call 0 bis 9 alle auf einmal –

+0

Wie wäre es jetzt? Ich bearbeitete es –