QTimer

  1. import sys
  2. from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton, QMessageBox
  3. from PyQt6.QtCore import QTimer
  4. class QWindow(QMainWindow):
  5. def __init__(self):
  6. super().__init__()
  7. self.resize(180,150)
  8. self.initUI()
  9. def initUI(self):
  10. self.btn = QPushButton('发送验证码',self)
  11. self.btn.clicked.connect(self.btnclicked)
  12. # 创建计时器
  13. self.time = QTimer(self)
  14. # 设置计时器时间间隔(单位:ms;1s = 1000ms)
  15. self.time.setInterval(1000)
  16. # 计时器每经过一个时间间隔,便发出一次信号
  17. self.time.timeout.connect(self.Refresh)
  18. self.count = 10
  19. self.resize(180,60)
  20. self.setCentralWidget(self.btn)
  21. self.show()
  22. def btnclicked(self):
  23. if self.btn.isEnabled():
  24. # 使用计时器
  25. self.time.start()
  26. # 按钮不可用
  27. self.btn.setEnabled(False)
  28. def Refresh(self):
  29. if self.count > 0:
  30. self.btn.setText(str(self.count)+'秒后重发')
  31. self.count -= 1
  32. else:
  33. self.time.stop()
  34. # 按钮可用
  35. self.btn.setEnabled(True)
  36. self.btn.setText('发送验证码')
  37. self.count = 10
  38. def main():
  39. app = QApplication(sys.argv)
  40. qw = QWindow()
  41. sys.exit(app.exec())
  42. if __name__ == '__main__':
  43. main()

QTimer Class | Qt Core 6.3.2