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
| #!/usr/bin/python3
# coding: utf-8
import sys
import os
from PyQt5 import (QtWidgets, QtGui, QtCore)
#############################################################################
class Dialogue(QtWidgets.QDialog):
#========================================================================
def __init__(self, parent=None):
super().__init__(parent)
self.bouton = QtWidgets.QPushButton("Quitter", self)
self.bouton.clicked.connect(self.quitter)
layout = QtWidgets.QGridLayout()
layout.addWidget(self.bouton, 0, 0)
self.setLayout(layout)
# lancement du timer
self.compteur = 0
self.timer = QtCore.QTimer(self)
self.timer.setTimerType(QtCore.Qt.PreciseTimer)
self.timer.setInterval(250)
self.timer.timeout.connect(self.action)
self.timer.start()
#========================================================================
def action(self):
"""méthode lancée par le timer
"""
self.compteur += 1
print("ss: ", self.compteur)
#========================================================================
def quitter(self):
"""méthode lancée par le bouton "quitter"
"""
print("Quitter")
self.close() # demande de fermeture de la fenêtre
#========================================================================
def closeEvent(self, event):
"""méthode lancée par la fermeture de la fenêtre dans tous les cas
"""
print("Fermeture fenêtre")
self.timer.stop() # Stoppe le timer
super().closeEvent(event)
#############################################################################
class Fenetre(QtWidgets.QWidget):
#========================================================================
def __init__(self, parent=None):
super(Fenetre, self).__init__(parent)
self.bouton1 = QtWidgets.QPushButton("bouton", self)
self.bouton1.clicked.connect(self.clictest)
posit = QtWidgets.QGridLayout()
posit.addWidget(self.bouton1, 0, 0)
self.setLayout(posit)
# lancement du timer
self.compteur = 0
self.timer = QtCore.QTimer(self)
self.timer.setTimerType(QtCore.Qt.PreciseTimer)
self.timer.setInterval(500)
self.timer.timeout.connect(self.action)
self.timer.start()
#========================================================================
def clictest(self):
""" lancement de la fenêtre QDialog
"""
self.dialog = Dialogue()
self.dialog.show() # <= boucle de traitement des évènements spécifique au QDialog
#========================================================================
def action(self):
"""méthode lancée par le timer
"""
self.compteur += 1
print("main: ", self.compteur)
#========================================================================
def closeEvent(self, event):
"""méthode lancée par la fermeture de la fenêtre dans tous les cas
"""
print("Fermeture appli")
self.timer.stop() # Stoppe le timer
super().closeEvent(event)
#############################################################################
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
fen = Fenetre()
fen.show()
sys.exit(app.exec_()) |
Partager