2017-09-07 4 views
0

Ich versuche, aufeinanderfolgende Bilder auf einem QLabel die Bilder 0.000.000-0.000.199 das Problem nummeriert sind, zu zeigen, dass die Variable num druckt leere ZeichenfolgeAufeinanderfolgende Bilder auf einem QLabel PyQt4 Zeige

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
import sys, time 

class Animation(QMainWindow): 
    def __init__(self, parent=None): 
     super(Animation, self).__init__(parent) 

     self.resize(QSize(720, 480)) 

     self.imageViewer = QLabel(self) 
     self.setCentralWidget(self.imageViewer) 

     startBtn = QPushButton("start", self) 
     startBtn.clicked.connect(self.start) 
     self.statusBar().addWidget(startBtn) 

    def start(self): 
     i = 0 
     while 1: 
      num = ("0" * (len(str(i)) - 7)) + str(i) 
      name = "frame" + num + ".png" 
      print ("0" * (len(str(i)) - 7)) 
      self.imageViewer.setPixmap(QPixmap(name)) 
      if i == 199: 
       break 
      i += 1 
      time.sleep(1) 

app = QApplication(sys.argv) 
test = Animation() 
test.show() 
app.exec_() 

Bitte helfen

+0

Nein, ich meine Meinung geändert –

Antwort

0

len(str(i)) - 7 gibt eine negative Zahl zurück. Sie müssen es tauschen um:

num = '0' * (7-len(str(i))) + str(i)

+0

ich glaube, das Problem nicht in der num ist, weil die Bilder immer noch nicht angezeigt und die App friert –

+0

Sie müssen sich mit [QThreads arbeiten ] (http://doc.qt.io/qt-5/thread-basics.html). Der Haupt-Thread aktualisiert nur die Benutzeroberfläche, wenn sie fertig ist. Daher benötigen Sie einen anderen Thread, der dem Hauptthread mitteilt, das Bild zu tauschen. – Simon