Използване на QTimer
Следващите раздели предоставят примери, които илюстрират как да се реализират две различни приложения с помощта на класа QTimer.
Пример 1: Създайте хронометър
Следният скрипт ще внедри приложение за хронометър в Python, използвайки класа QTimer. Това приложение ще отчита броя на секундите и броя на минутите. Два бутона се използват за стартиране, спиране, възобновяване и нулиране на брояча. Когато потребителят щракне върху Започнете бутон, броячът ще започне да брои и надписът на Започнете бутонът ще бъде променен на Спри се. Когато потребителят щракне върху Започнете бутон с надпис Спри се, броячът ще спре временно и надписът на Започнете бутонът ще бъде променен на Продължи за да продължите брояча към следващия път. Когато потребителят щракне върху Нулиране бутон, всички стойности на брояча ще бъдат инициализирани до 0.
# Импортирайте необходимите модулиимпортиране на sys
от PyQt5.Внос на QtWidgets *
от PyQt5.Внос на QtCore *
# Определете класа, за да създадете хронометър
клас StopWatchWindow (QMainWindow):
def __init __ (самостоятелно):
# Извикайте родителския конструктор
супер ().__в него__()
# Задайте заглавието на прозореца
себе си.setWindowTitle ("Стоп часовник с помощта на QTimer")
# Задайте геометрията на прозореца
себе си.setGeometry (100, 100, 300, 200)
# Задайте необходимите променливи
себе си.брояч = 0
себе си.минута = '00'
себе си.второ = '00'
себе си.брой = '00'
себе си.startWatch = Невярно
# Създайте етикет за показване на часовника
себе си.label = QLabel (самостоятелно)
# Задайте геометрия за етикета
себе си.етикет.setGeometry (100, 40, 150, 70)
# Създаване на бутон за стартиране
себе си.start = QPushButton ("Старт", самостоятелно)
# Задайте геометрия на бутона за стартиране
себе си.старт.setGeometry (50, 120, 100, 40)
# Извикайте метода start () при щракване върху бутона за стартиране
себе си.старт.натиснат.свързване (самостоятелно.Старт)
# Създаване на бутон за нулиране
resetWatch = QPushButton ("Нулиране", самостоятелно)
# Задайте геометрия на бутона за спиране
resetWatch.setGeometry (160, 120, 100, 40)
# Метод за извикване на нулиране () при щракване върху бутона за нулиране
resetWatch.натиснат.свързване (самостоятелно.Нулиране)
# Създайте обект с таймер
таймер = QTimer (самостоятелно)
# Добавете метод с таймера
таймер.изчакване.свързване (самостоятелно.showCounter)
# Извикайте метода start (), за да промените стойността на таймера
таймер.старт (100)
# Преместете позицията на прозореца
себе си.преместване (900, 400)
# Показване на прозореца
себе си.покажи ()
# Определете метод за промяна на стойностите на минути и секунди въз основа на стойността на таймера
def showCounter (самостоятелно):
# Проверете стойността на променливата startWatch, за да стартирате или спрете секундомера
ако аз.startWatch:
# Увеличаване на брояч с 1
себе си.брояч + = 1
# Пребройте и задайте стойността на брояча на времето
cnt = int ((самостоятелно.брояч / 10 - int (самостоятелно.брояч / 10)) * 10)
себе си.count = '0' + str (cnt)
# Задайте втората стойност
ако int (самостоятелно.брояч / 10) < 10 :
себе си.second = '0' + str (int (самостоятелно.брояч / 10))
друго:
себе си.second = str (int (самостоятелно.брояч / 10))
# Задайте минутна стойност
ако аз.брояч / 10 == 60.0:
себе си.второ == '00'
себе си.брояч = 0
min = int (самостоятелно.минута) + 1
ако мин < 10 :
себе си.minute = '0' + str (мин)
друго:
себе си.минута = str (мин)
# Обединете стойностите на mintue, second и count
текст = себе си.минута + ':' + себе си.второ + ':' + себе си.броя
# Показвайте стойностите на хронометъра в етикета
себе си.етикет.setText ('
„+ текст +“
')# Определете метод за обработка на стартовия бутон
def Start (самостоятелно):
# Задайте надписа на бутона за стартиране въз основа на предишния надпис
ако аз.старт.text () == 'Стоп':
себе си.старт.setText ('Възобновяване')
себе си.startWatch = Невярно
друго:
# make startWatch към вярно
себе си.startWatch = Вярно
себе си.старт.setText ('Стоп')
# Определете метод за обработка на бутона за нулиране
def Нулиране (самостоятелно):
себе си.startWatch = Невярно
# Нулиране на всички броячни променливи
себе си.брояч = 0
себе си.минута = '00'
себе си.второ = '00'
себе си.брой = '00'
# Задайте началните стойности за хронометъра
себе си.етикет.setText (str (самостоятелно.брояч))
# Създайте обект на приложение и стартирайте приложението
app = QApplication (sys.argv)
stopWt = StopWatchWindow ()
ап.exec ()
След изпълнението на горния скрипт ще се появи следният прозорец.
Хронометърът ще започне да работи, след като потребителят щракне върху Започнете бутон.
Броячът ще спре да брои, след като потребителят щракне върху Спри се бутон.
Пример 2: Създайте цифров часовник
Следният скрипт ще внедри цифров часовник в Python с помощта на QTimer клас. Скриптът ще покаже цифровия часовник в етикет, като чете текущото системно време веднъж на секунда.
# Импортирайте необходимите модулиимпортиране на sys
от PyQt5.QtWidgets импортират QApplication, QWidget, QLabel, QVBoxLayout
от PyQt5.QtCore импортиране QTimer, QTime, Qt
от PyQt5.QtGui импортира QFont
# Определете клас за създаване на цифров часовник
клас DigitalClock (QWidget):
def __init __ (самостоятелно):
супер ().__в него__()
# Създайте етикет с шрифт и подравняване
себе си.lblTimer = QLabel ()
font = QFont ('Times', 50)
себе си.lblTimer.setFont (шрифт)
себе си.lblTimer.setAlignment (Qt.AlignCenter)
# Създайте обект с променливо оформление
v_layout = QVBoxLayout ()
v_layout.addWidget (самостоятелно.lblTimer)
себе си.setLayout (v_layout)
# Създайте обекта на таймера и извикайте необходимите методи за показване на часовника
таймер = QTimer (самостоятелно)
таймер.изчакване.свързване (самостоятелно.showClock)
таймер.старт (1000)
# Задайте заглавието на прозореца
себе си.setWindowTitle ("Цифров часовник с помощта на QTimer")
# Преоразмерете прозореца
себе си.преоразмеряване (270, 120)
# Преместете позицията на прозореца
себе си.преместване (800, 400)
# Метод на повикване за показване на часа
себе си.showClock ()
# Показване на прозореца
себе си.покажи ()
def showClock (самостоятелно):
# Прочетете текущото време
Current_Time = QTime.текущо време()
# Показване на цифровия часовник
себе си.lblTimer.setText ('
'+ Current_Time.toString ('hh: mm: ss AP') + '
')# Създайте обект на приложение и стартирайте приложението
app = QApplication (sys.argv)
win = DigitalClock ()
ап.exec ()
Следващият изходен прозорец ще се появи след изпълнението на горния скрипт.
Заключение
Стойността на датата и часа на текущото системно време може да се чете по различни начини, като се използва класът QTimer на библиотеката PyQt. Класът QTimer е използван в този урок за изпълнение на различни примерни скриптове, свързани с времето.