Uso de QTimer
As seções a seguir fornecem exemplos que ilustram como implementar dois aplicativos diferentes usando a classe QTimer.
Exemplo 1: criar um cronômetro
O script a seguir implementará um aplicativo de cronômetro em Python usando a classe QTimer. Este aplicativo contará o número de segundos e o número de minutos. Dois botões são usados para iniciar, parar, retomar e zerar o contador. Quando o usuário clica no Começar botão, o contador começará a contar, e a legenda do Começar botão será alterado para Pare. Quando o usuário clica no Começar botão com a legenda Pare, o contador irá parar temporariamente, e a legenda do Começar botão será alterado para Retomar para continuar o contador para a próxima vez. Quando o usuário clica no Redefinir botão, todos os valores do contador serão inicializados em 0.
# Importe os módulos necessáriosimport sys
de PyQt5.Importação de QtWidgets *
de PyQt5.Importação QtCore *
# Defina a classe para criar o cronômetro
classe StopWatchWindow (QMainWindow):
def __init __ (self):
# Chame o construtor pai
super().__iniciar__()
# Defina o título da janela
auto.setWindowTitle ("Stop Watch usando QTimer")
# Defina a geometria da janela
auto.setGeometry (100, 100, 300, 200)
# Defina as variáveis necessárias
auto.contador = 0
auto.minuto = '00'
auto.segundo = '00'
auto.contagem = '00'
auto.startWatch = False
# Crie uma etiqueta para exibir o relógio
auto.rótulo = QLabel (self)
# Definir geometria para o rótulo
auto.rótulo.setGeometry (100, 40, 150, 70)
# Criar botão de início
auto.start = QPushButton ("Iniciar", self)
# Defina a geometria para o botão iniciar
auto.começar.setGeometry (50, 120, 100, 40)
# Chame o método start () quando o botão iniciar for clicado
auto.começar.pressionado.conectar (eu mesmo.Começar)
# Criar botão de reinicialização
resetWatch = QPushButton ("Reset", self)
# Defina a geometria para o botão de parada
resetWatch.setGeometry (160, 120, 100, 40)
# Chame o método reset () quando o botão de reset for clicado
resetWatch.pressionado.conectar (eu mesmo.Redefinir)
# Criar objeto temporizador
timer = QTimer (self)
# Adicione um método com o cronômetro
cronômetro.tempo esgotado.conectar (eu mesmo.showCounter)
# Chame o método start () para modificar o valor do temporizador
cronômetro.iniciar (100)
# Mova a posição da janela
auto.mover (900, 400)
# Exibir a janela
auto.mostrar()
# Defina um método para modificar os valores de minutos e segundos com base no valor do cronômetro
def showCounter (self):
# Verifique o valor da variável startWatch para iniciar ou parar o cronômetro
se eu.startWatch:
# Incrementa o contador em 1
auto.contador + = 1
# Conte e defina o valor do contador de tempo
cnt = int ((self.counter / 10 - int (self.contador / 10)) * 10)
auto.contagem = '0' + str (cnt)
# Defina o segundo valor
if int (self.contador / 10) < 10 :
auto.segundo = '0' + str (int (self.contador / 10))
senão:
auto.segundo = str (int (self.contador / 10))
# Defina o valor do minuto
se eu.contador / 10 == 60.0:
auto.segundo == '00'
auto.contador = 0
min = int (self.minuto) + 1
se min < 10 :
auto.minuto = '0' + str (min)
senão:
auto.minuto = str (min)
# Mesclar os valores de minuto, segundo e contagem
text = self.minuto + ':' + self.segundo + ':' + self.contar
# Exibir os valores do cronômetro no rótulo
auto.rótulo.setText ('
'+ texto +'
')# Defina o método para lidar com o botão iniciar
def Start (self):
# Defina a legenda do botão iniciar com base na legenda anterior
se eu.começar.text () == 'Parar':
auto.começar.setText ('Resume')
auto.startWatch = False
senão:
# making startWatch to true
auto.startWatch = True
auto.começar.setText ('Stop')
# Defina o método para lidar com o botão de reinicialização
Def Reset (self):
auto.startWatch = False
# Reinicializar todas as variáveis do contador
auto.contador = 0
auto.minuto = '00'
auto.segundo = '00'
auto.contagem = '00'
# Defina os valores iniciais para o cronômetro
auto.rótulo.setText (str (self.balcão))
# Crie um objeto de aplicativo e execute o aplicativo
app = QApplication (sys.argv)
stopWt = StopWatchWindow ()
aplicativo.exec ()
A seguinte janela iráaparecer após o script acima ser executado.
O cronômetro começará a funcionar depois que o usuário clicar no Começar botão.
O contador irá parar de contar depois que o usuário clicar no Pare botão.
Exemplo 2: criar um relógio digital
O script a seguir implementará um relógio digital em Python usando o QTimer aula. O script exibirá o relógio digital em uma etiqueta lendo a hora atual do sistema uma vez a cada segundo.
# Importe os módulos necessáriosimport sys
de PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
de PyQt5.QtCore import QTimer, QTime, Qt
de PyQt5.QtGui import QFont
# Defina a classe para criar o relógio digital
classe DigitalClock (QWidget):
def __init __ (self):
super().__iniciar__()
# Crie uma etiqueta com fonte e alinhamento
auto.lblTimer = QLabel ()
font = QFont ('Times', 50)
auto.lblTimer.setFont (fonte)
auto.lblTimer.setAlignment (Qt.AlignCenter)
# Crie o objeto de layout vártico
v_layout = QVBoxLayout ()
v_layout.addWidget (self.lblTimer)
auto.setLayout (v_layout)
# Crie o objeto cronômetro e chame os métodos necessários para exibir o relógio
timer = QTimer (self)
cronômetro.tempo esgotado.conectar (eu mesmo.showClock)
cronômetro.iniciar (1000)
# Defina o título da janela
auto.setWindowTitle ("Relógio digital usando QTimer")
# Redimensionar a janela
auto.redimensionar (270, 120)
# Mova a posição da janela
auto.mover (800, 400)
# Método de chamada para exibir a hora
auto.showClock ()
# Exibir a janela
auto.mostrar()
def showClock (self):
# Leia a hora atual
Current_Time = QTime.hora atual()
# Exibir o relógio digital
auto.lblTimer.setText ('
'+ Current_Time.toString ('hh: mm: ss AP') + '
')# Crie um objeto de aplicativo e execute o aplicativo
app = QApplication (sys.argv)
win = DigitalClock ()
aplicativo.exec ()
A seguinte janela de saída aparecerá após o script acima ser executado.
Conclusão
O valor de data e hora da hora atual do sistema pode ser lido de várias maneiras usando a classe QTimer da biblioteca PyQt. A classe QTimer foi usada neste tutorial para executar vários scripts de exemplo relacionados ao tempo.