Python

Как использовать PyQt QTimer

Как использовать PyQt QTimer
Класс QTimer библиотеки PyQt позволяет пользователям создавать цифровые часы, счетчик времени, индикатор выполнения и т. Д. Этот класс используется для создания обычного таймера, который отправляет сигнал при срабатывании таймера и наследуется от QObject класс. Объект QTimer класс создается как дочерний элемент виджета. Когда виджет удаляется, объект таймера также удаляет. В QTimer класс предоставляет статическую функцию, называемую одиночный выстрел() который можно использовать для вызова функции после определенного периода. В этом руководстве показано, как использовать QTimer класс для создания приложений PyQt, связанных со временем.

Использование QTimer

В следующих разделах представлены примеры, которые иллюстрируют, как реализовать два разных приложения с использованием класса QTimer.

Пример 1: создание секундомера

Следующий скрипт реализует приложение секундомера на Python с использованием класса QTimer. Это приложение будет считать количество секунд и количество минут. Две кнопки используются для запуска, остановки, возобновления и сброса счетчика. Когда пользователь щелкает Начинать кнопку, счетчик начнет отсчет, а надпись Начинать кнопка будет изменена на Стоп. Когда пользователь щелкает Начинать кнопка с подписью Стоп, счетчик временно остановится, а заголовок Начинать кнопка будет изменена на Резюме чтобы продолжить счетчик до следующего раза. Когда пользователь щелкает Сброс настроек кнопка, все значения счетчика будут инициализированы на 0.

# Импортировать необходимые модули
import sys
из PyQt5.QtWidgets import *
из PyQt5.QtCore импорт *
# Определить класс для создания секундомера
класс StopWatchWindow (QMainWindow):
def __init __ (сам):
# Вызвать родительский конструктор
супер().__в этом__()
# Установить заголовок окна
себя.setWindowTitle ("Секундомер с использованием QTimer")
# Устанавливаем геометрию окна
себя.setGeometry (100, 100, 300, 200)
# Устанавливаем необходимые переменные
себя.counter = 0
себя.минута = '00'
себя.второй = '00'
себя.count = '00'
себя.startWatch = Ложь
# Создать этикетку для отображения часов
себя.label = QLabel (сам)
# Установить геометрию для метки
себя.метка.setGeometry (100, 40, 150, 70)
# Создать кнопку запуска
себя.start = QPushButton ("Старт", самостоятельно)
# Установить геометрию на кнопку запуска
себя.Начало.setGeometry (50, 120, 100, 40)
# Вызов метода start () при нажатии кнопки запуска
себя.Начало.прижатый.подключиться (самостоятельно.Начинать)
# Создать кнопку сброса
resetWatch = QPushButton ("Сбросить", самостоятельно)
# Установите геометрию на кнопку остановки
сбросить.setGeometry (160, 120, 100, 40)
# Вызвать метод reset () при нажатии кнопки сброса
сбросить.прижатый.подключиться (самостоятельно.Сброс настроек)
# Создать объект таймера
timer = QTimer (сам)
# Добавляем метод с таймером
таймер.тайм-аут.подключиться (самостоятельно.showCounter)
# Вызвать метод start () для изменения значения таймера
таймер.начало (100)
# Переместить положение окна
себя.двигаться (900, 400)
# Показать окно
себя.показывать()
# Определить метод изменения значений минут и секунд на основе значения таймера
def showCounter (self):
# Проверить значение переменной startWatch, чтобы запустить или остановить секундомер
если я.startWatch:
# Увеличить счетчик на 1
себя.счетчик + = 1
# Подсчитать и установить значение счетчика времени
cnt = int ((self.counter / 10 - int (self.счетчик / 10)) * 10)
себя.count = '0' + str (cnt)
# Устанавливаем второе значение
если int (self.счетчик / 10) < 10 :
себя.второй = '0' + str (int (self.счетчик / 10))
еще:
себя.второй = str (int (self.счетчик / 10))
# Установить значение минут
если я.counter / 10 == 60.0:
себя.второй == '00'
себя.counter = 0
min = int (self.минута) + 1
если мин < 10 :
себя.минута = '0' + str (мин)
еще:
себя.минута = str (мин)
# Объединить значения mintue, second и count
текст = сам.минута + ':' + я.второй + ':' + я.считать
# Отображение значений секундомера в метке
себя.метка.setText ('

'+ текст +'

')
# Определить метод обработки кнопки запуска
def Start (self):
# Установить заголовок кнопки запуска на основе предыдущего заголовка
если я.Начало.text () == 'Стоп':
себя.Начало.setText ('Продолжить')
себя.startWatch = Ложь
еще:
# делаем startWatch равным true
себя.startWatch = True
себя.Начало.setText ('Стоп')
# Определить метод обработки кнопки сброса
def Сброс (сам):
себя.startWatch = Ложь
# Сбросить все переменные счетчика
себя.counter = 0
себя.минута = '00'
себя.второй = '00'
себя.count = '00'
# Установить начальные значения для секундомера
себя.метка.setText (str (self.прилавок))
# Создать объект приложения и запустить приложение
app = QApplication (sys.argv)
stopWt = StopWatchWindow ()
приложение.exec ()

Следующее окно появится после выполнения вышеуказанного скрипта.

Секундомер начнет работать после того, как пользователь щелкнет Начинать кнопка.

Счетчик перестанет считать после того, как пользователь щелкнет Стоп кнопка.

Пример 2: Создание цифровых часов

Следующий скрипт реализует цифровые часы на Python с помощью QTimer класс. Скрипт отобразит цифровые часы в метке, считывая текущее системное время раз в секунду.

# Импортировать необходимые модули
import sys
из PyQt5.QtWidgets импортируют QApplication, QWidget, QLabel, QVBoxLayout
из PyQt5.QtCore import QTimer, QTime, Qt
из PyQt5.QtGui импорт QFont
# Определить класс для создания цифровых часов
класс DigitalClock (QWidget):
def __init __ (сам):
супер().__в этом__()
# Создать этикетку со шрифтом и выравниванием
себя.lblTimer = QLabel ()
font = QFont ('Время', 50)
себя.lblTimer.setFont (шрифт)
себя.lblTimer.setAlignment (Qt.AlignCenter)
# Создаем объект макета vartical
v_layout = QVBoxLayout ()
v_layout.addWidget (self.lblTimer)
себя.setLayout (v_layout)
# Создаем объект таймера и вызываем необходимые методы для отображения часов
timer = QTimer (сам)
таймер.тайм-аут.подключиться (самостоятельно.showClock)
таймер.начало (1000)
# Установить заголовок окна
себя.setWindowTitle («Цифровые часы с использованием QTimer»)
# Изменить размер окна
себя.изменить размер (270, 120)
# Переместить положение окна
себя.двигаться (800, 400)
# Вызвать метод для отображения времени
себя.showClock ()
# Показать окно
себя.показывать()
def showClock (сам):
# Прочитать текущее время
Current_Time = QTime.Текущее время()
# Отображение цифровых часов
себя.lblTimer.setText ('

'+ Current_Time.toString ('чч: мм: сс AP') + '

')
# Создать объект приложения и запустить приложение
app = QApplication (sys.argv)
win = DigitalClock ()
приложение.exec ()

Следующее окно вывода появится после выполнения вышеуказанного скрипта.

Заключение

Значение даты и времени текущего системного времени можно прочитать различными способами, используя класс QTimer библиотеки PyQt. Класс QTimer использовался в этом руководстве для выполнения различных примеров сценариев, связанных со временем.

Лучшие дистрибутивы Linux для игр в 2021 году
Операционная система Linux прошла долгий путь от своего первоначального простого серверного вида. Эта ОС значительно улучшилась за последние годы и те...
Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...