2017-10-07 3 views
0

J'ajoute du code à mon application pour ouvrir une séquence d'images avec deux boutons prev et suivant. comment je peux définir le prochain bouton cliqué chaque seconde par exemple pour jouer la séquence?Séquence d'images en boucle PyQt5 automatiquement

def nextitem(self): 
    self.listWidget.sortItems() 
    #a = self.choice2.text() 
    count = self.listWidget.count() 
    cur = self.listWidget.currentRow() 
    self.listWidget.setCurrentRow(cur+1) 
    if (cur+1) == count: 
     self.listWidget.setCurrentRow(0) 
    if len(self.choice2.text()) > 0: 
     tex = self.listWidget.currentItem().text() 
     a = self.video_choice_2.setText(tex) 
    self.playVideo2() 

enter image description here

MISE À JOUR i trouver une fonction dans le forum et ça marche, mais je ne peux pas arrêter l'animation ou de faire quoi que ce soit d'autre.

import time 
    repeat_time = 0.3 
    while True: 
     start_time = time.time() 
     self.nextitem() 
     time.sleep(max(repeat_time - (time.time() - start_time), 0.0)) 

Répondre

0

Vous ne voulez pas utiliser time.sleep car cela verrouille le processus. Utilisez QTimer à partir de PyQt5.QtCore à la place. Google a des tonnes d'exemples d'utilisation de QTimer.

+0

merci pour l'information; je vais chercher à ce sujet – seghier

+1

merci; je trouve un bon exemple: http://nullege.com/codes/show/[email protected]@[email protected]@[email protected]@[email protected]@bubbleswidget.py/126/PyQt5.QtCore.QTimer – seghier

0

i trouver une solution et il fonctionne bien, mais quand je clique sur le bouton de lecture deux fois ou plusieurs fois la vitesse accrue et je ne peux pas arrêter l'animation.

def playSeq(self): 
    self.animation_timer = QTimer(self) 
    self.animation_timer.setSingleShot(False) 
    self.animation_timer.timeout.connect(self.nextitem) 
    self.animation_timer.start(300) 

MISE À JOUR: Problème résolu avant quand je clique, il appelle toujours QTimer mais maintenant appel ne commencent

self.animation_timer = QTimer(self) 
    self.animation_timer.setSingleShot(False) 
    self.animation_timer.timeout.connect(self.nextitem) 
def playSeq(self):  
    self.animation_timer.start(300) 
+0

Si vous Si vous avez une autre question, posez-la en cliquant sur le bouton [Poser une question] (// stackoverflow.com/questions/ask). – ekhumoro

+0

c'est une autre question dans le même sujet; pourquoi j'ai besoin de demander encore et que quelqu'un - et je suis sûr - commentera comme votre commentaire: ne posez pas la même question, s'il vous plaît si vous ne pouvez pas aider ne commentez pas – seghier

+0

Si vous avez une nouvelle question, s'il vous plaît demandez en cliquant sur le bouton [Poser une question] (https://stackoverflow.com/questions/ask). Incluez un lien vers cette question si cela aide à fournir un contexte. - [De l'avis] (/ review/low-quality-posts/17560229) –