Python. PyQt5. QTimer

Как называется сигнал который постоянно генерирует QTimer?


Ответы (1 шт):

Автор решения: S. Nick

Класс QTimer предоставляет высокоуровневый интерфейс программирования для таймеров.

Чтобы использовать его, создайте QTimer, подключите его сигнал timeout() к соответствующим слотам и вызовите start(). С этого момента он будет излучать сигнал timeout() с постоянными интервалами.


QTimer::timeout()

Этот сигнал испускается, когда таймер истекает.

Примечание: это частный сигнал. Он может использоваться в сигнальных соединениях, но не может излучаться пользователем.


QTimer::isActive() const

Возвращает true, если таймер работает (в ожидании); в противном случае возвращает false.


import sys
from PyQt5.Qt import *


class MyGui(QWidget):
    def __init__(self):
        super().__init__()

        self.label = QLabel()
        self.btnStartStop = QPushButton('Start Timer')
        self.btnStartStop.clicked.connect(self.on_off_timer)
        self.btnIsActive = QPushButton('Timer isActive?')
        self.btnIsActive.clicked.connect(self.timer_is_active)

        layout = QGridLayout(self)
        layout.addWidget(self.label, 0, 0, 1, 2, alignment=Qt.AlignCenter)
        layout.addWidget(self.btnStartStop, 1, 0)
        layout.addWidget(self.btnIsActive, 1, 1)

        self.timer = QTimer(self)
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.displayTime)                 # <---

    def displayTime(self):
        self.label.setText(QDateTime.currentDateTime().toString())

    def on_off_timer(self):
        if self.btnStartStop.text() == 'Start Timer':
            self.timer.start()
            self.btnStartStop.setText('Stop Timer')
        else:
            self.timer.stop()
            self.btnStartStop.setText('Start Timer')

    def timer_is_active(self):
        if self.timer.isActive():
            print(f'{self.timer.isActive()} <- таймер работает!')
        else:
            print(f'{self.timer.isActive()} <- таймер НЕ работает.')


if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setFont(QFont("Times", 12, QFont.Bold))
    gui = MyGui()
    gui.show()
    sys.exit(app.exec_())

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка