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

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

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

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

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

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

Следующий скрипт реализует приложение секундомера на Python с использованием класса QTimer. Это приложение будет считать количество секунд и количество минут. Две кнопки используются для запуска, остановки, возобновления и сброса счетчика. Когда пользователь нажимает кнопку » Пуск», счетчик начинает отсчет, а заголовок кнопки » Пуск» изменяется на » Стоп». Когда пользователь нажимает кнопку » Пуск» с надписью » Стоп», счетчик временно останавливается, а заголовок кнопки » Пуск» изменяется на » Возобновить«, чтобы продолжить работу счетчика в следующий раз. А также когда пользователь нажимает кнопку сброса При нажатии кнопки все значения счетчика будут сброшены на 0.

# Import necessary modules
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

# Define class to create the stop watch
class StopWatchWindow(QMainWindow):

def __init__(self):
# Call the parent constructor
super().__init__()

# Set the title of the window
self.setWindowTitle(«Stop Watch using QTimer»)
# Set the geometry for the window
self.setGeometry(100, 100, 300, 200)

# Set the necessary variables
self.counter = 
self.minute = ’00’
self.second = ’00’
self.count = ’00’
self.startWatch = False

# Create label to display the watch
self.label = QLabel(self)
# Set geometry for the label
self.label.setGeometry(100, 40, 150, 70)

# Create start button
self.start = QPushButton(«Start», self)
# Set geometry to the start button
self.start.setGeometry(50, 120, 100, 40)
# Call start() method when the start button is clicked
self.start.pressed.connect(self.Start)

# Create reset button
resetWatch = QPushButton(«Reset», self)
# Set geometry to the stop button
resetWatch.setGeometry(160, 120, 100, 40)
# Call reset() method when the reset button is clicked
resetWatch.pressed.connect(self.Reset)

# Create timer object
timer = QTimer(self)
# Add a method with the timer
timer.timeout.connect(self.showCounter)
# Call start() method to modify the timer value
timer.start(100)

# Move the position of the window
self.move(900, 400)
# Display the window
self.show()

# Define a method to modify the values of minutes and seconds based on the timer value
def showCounter(self):
# Check the value of startWatch  variable to start or stop the Stop Watch
if self.startWatch:
# Increment counter by 1
self.counter += 1

# Count and set the time counter value
cnt = int((self.counter/10 — int(self.counter/10))*10)
self.count = ‘0’ + str(cnt)

# Set the second value
if int(self.counter/10) < 10 :
self.second = ‘0’ + str(int(self.counter / 10))
else:
self.second = str(int(self.counter / 10))
# Set the minute value
if self.counter / 10 == 60.0 :
self.second == ’00’
self.counter = 
min = int(self.minute) + 1
if min < 10 :
self.minute = ‘0’ + str(min)
else:
self.minute = str(min)

# Merge the mintue, second and count values
text = self.minute + ‘:’ + self.second + ‘:’ + self.count
# Display the stop watch values in the label
self.label.setText(‘<h1 style=»color:blue»>’ + text + ‘</h1>’)

# Define method to handle the start button
def Start(self):
# Set the caption of the start button based on previous caption
if self.start.text() == ‘Stop’:
self.start.setText(‘Resume’)
self.startWatch = False
else:
# making startWatch to true
self.startWatch = True
self.start.setText(‘Stop’)

# Define method to handle the reset button
def Reset(self):
self.startWatch = False
# Reset all counter variables
self.counter = 
self.minute = ’00’
self.second = ’00’
self.count = ’00’
# Set the initial values for the stop watch
self.label.setText(str(self.counter))

# Create app object and run the app
app = QApplication(sys.argv)
stopWt = StopWatchWindow()
app.exec()

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

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

Секундомер начнет работать после того, как пользователь нажмет кнопку «Пуск».

Секундомер начнет работать после того, как пользователь нажмет кнопку Пуск

Счетчик прекратит отсчет после того, как пользователь нажмет кнопку «Стоп».

Счетчик прекратит отсчет после того, как пользователь нажмет кнопку Стоп

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

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

# Import necessary modules
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import QTimer, QTime, Qt
from PyQt5.QtGui import QFont

# Define class to create the digital clock
class DigitalClock(QWidget):
def __init__(self):
super().__init__()

# Create a label with font and alignment
self.lblTimer = QLabel()
font = QFont(‘Times’, 50)
self.lblTimer.setFont(font)
self.lblTimer.setAlignment(Qt.AlignCenter)

# Create the vartical layout object
v_layout = QVBoxLayout()
v_layout.addWidget(self.lblTimer)
self.setLayout(v_layout)

# Create the timer object and call necessary methods to display the clock
timer = QTimer(self)
timer.timeout.connect(self.showClock)
timer.start(1000)

# Set the title of the window
self.setWindowTitle(«Digital Clock using QTimer»)
# Resize the window
self.resize(270, 120)
# Move the position of the window
self.move(800, 400)
# Call method to display the time
self.showClock()
# Display the window
self.show()

def showClock(self):
# Read the current time
Current_Time = QTime.currentTime()
# Display the digital clock
self.lblTimer.setText(‘<p style=»color:green»>’ + Current_Time.toString(‘hh:mm:ss AP’) + ‘</p>’)

# Create app object and run the app
app = QApplication(sys.argv)
win = DigitalClock()
app.exec()

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

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

Вывод

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

Оцените статью
bestprogrammer.ru
Добавить комментарий