IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GUI Python Discussion :

blocage de mon animation (IHM PyQT5)


Sujet :

GUI Python

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2013
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 229
    Points : 109
    Points
    109
    Par défaut blocage de mon animation (IHM PyQT5)
    Bonjour


    voila , j'ai crée une animation d'attente (code ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    import sys
    import time
    from PyQt5 import QtCore
    from PyQt5.QtCore import QThread, pyqtSignal
    from PyQt5.QtWidgets import QWidget, QPushButton, QProgressBar, QVBoxLayout, QApplication, QLabel
    from PyQt5.QtGui import QIcon, QPixmap
     
    class Thread(QThread):
        _signal = pyqtSignal(int)
        def __init__(self):
            super(Thread, self).__init__()
            self.timerStop = False
     
        def stoptimer(self):
            print("Close Event")
            self.timerStop = True
     
     
        def run(self):
            i=0
            while True:
                print(self.timerStop)
                if self.timerStop ==True:
                    print("Stop Timer")
                    self.timerStop = False
                    break
                time.sleep(0.2)
                self._signal.emit(i)
                i+=10
                if i == 110 : i=0
     
     
     
    class Gui_Attente(QWidget):
     
        def __init__(self):
            super(Gui_Attente, self).__init__()
            self.timerStop =False
            self.setWindowTitle('En Cours')
            self.resize(180, 80)
            self.label = QLabel(self)
            self.ImageBar =  './UIQT/attente/logos_0.png'
            pixmap = QPixmap(self.ImageBar)
            self.label.setPixmap(pixmap)
     
            self.btn_start = QPushButton('start')
            self.btn_stop = QPushButton('stop')
     
            self.btn_hidewin = QPushButton('hide')
            self.btn_showwin = QPushButton('show')
     
            self.btn_start.clicked.connect(self.startTimer)
            self.btn_stop.clicked.connect(self.stopTimer)
     
            self.btn_hidewin.clicked.connect(self.hide_win)
            self.btn_showwin.clicked.connect(self.show_win)
     
            self.vbox = QVBoxLayout()
            self.vbox.addWidget(self.label)
     
            self.vbox.addWidget(self.btn_start)
            self.vbox.addWidget(self.btn_stop)
     
            self.vbox.addWidget(self.btn_hidewin)
            self.vbox.addWidget(self.btn_showwin)
     
            self.setLayout(self.vbox)
            self.show()
     
        def hide_win(self):
            self.hide()
     
     
     
        def show_win(self):
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
            self.show()
     
        def startthread(self):
     
            self.thread = Thread()
            self.thread._signal.connect(self.signal_accept)
     
        def startTimer(self):
            self.thread.start()
     
     
        def stopTimer(self):
            self.thread.stoptimer()
     
        def closeEvent(self, event):
            self.thread.stoptimer()
     
     
     
     
        def signal_accept(self, msg):
            if msg == 110:
                msg = "0"
     
            self.ImageBar = './UIQT/attente/logos_' + str(int(msg) )+ '.png'
            #print(self.ImageBar)
            pixmap = QPixmap(self.ImageBar)
            self.label.setPixmap(pixmap)
     
     
     
     
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        ex = Gui_Attente()
        ex.startthread()
        sys.exit(app.exec_())

    Quand j'ouvre ma fenêtre principal, j'affiche ma fenêtre d'attente en arrière plan (et je la cache) ,pas cacher pour les test.

    donc au moment où dans ma fenêtre principal , je clique sur le bouton1 de ma fenetre principal qui fait un requête HTTP et affiche différente valeurs , l'animation se bloque.

    PI le bouton1 fait des appel a des API et affiche dans des label et Treeview des valeurs
    interface a partir de PyQT


    Qqun aurait une solution ou un début de piste sur ma probable erreur SVP

    MErci

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai exécuté le code (copier-coller), qui affiche une petite fenêtre avec 4 boutons:

    - clic sur "start" => s'affiche dans la console de façon ininterrompu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    False
    False
    False
    False
    ...
    - clic sur "stop" => affiche ce qui suit et l'affichage s'arrête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Close Event
    True
    Stop Timer
    - clic sur "hide" => la fenêtre disparait (mais le programme n'est pas arrêté). Aucun moyen de le faire réapparaitre.

    - clic sur "show" => rien ne se passe.

    Comme je n'arrive pas à reproduire ce que tu décris, je ne vois pas comment t'aider.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. pb lors de l'exécution de mon animation
    Par pitchounette13 dans le forum Flash
    Réponses: 1
    Dernier message: 17/05/2006, 09h30
  2. [Swishmax] Navigation dans mon animation
    Par denis finch dans le forum EDI/Outils
    Réponses: 5
    Dernier message: 22/11/2005, 15h51
  3. blocage avec mon like
    Par ouedmouss dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/09/2005, 14h20
  4. [Thread] Blocage dans mon programme
    Par Xo Sonic oX dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 18/06/2005, 17h12
  5. Réponses: 2
    Dernier message: 10/12/2004, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo