当前位置:   article > 正文

python PyQt5 实现定时器_pyqt5 定时器

pyqt5 定时器
  • 代码实现 
  1. import sys
  2. import pygame
  3. from PyQt5.QtCore import QTimer
  4. from PyQt5.QtGui import QIcon
  5. from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QDoubleSpinBox, QSpinBox
  6. class XiaoYa(QWidget):
  7. def __init__(self):
  8. super().__init__()
  9. pygame.mixer.init()
  10. pygame.mixer.music.load("static/audio_file.mp3")
  11. self.btn = None
  12. self.isStart = None
  13. self.mytimer = None
  14. self.minute = None
  15. self.seconds = None
  16. self.defStyleSheet = "font-size:30px;color:red"
  17. self.intUi()
  18. def intUi(self):
  19. self.setWindowTitle("小雅的倒计时") # 4. 设置窗口标题
  20. self.resize(400, 180) # 设置窗口大小
  21. self.setWindowIcon(QIcon("static/icon.png"))
  22. # 文本框
  23. self.minute = QSpinBox(self)
  24. self.minute.setGeometry(115, 20, 50, 40)
  25. # 设置范围和步长
  26. self.minute.setRange(0, 30)
  27. self.minute.setSingleStep(1)
  28. # 设置当前值
  29. self.minute.setValue(3)
  30. self.minute.setStyleSheet(self.defStyleSheet)
  31. label = QLabel("分", self)
  32. # 设置位置x,y,w,h
  33. label.setGeometry(170, 20, 40, 40)
  34. label.setStyleSheet(self.defStyleSheet)
  35. # 文本框
  36. self.seconds = QSpinBox(self)
  37. self.seconds.setGeometry(210, 20, 50, 40)
  38. # 设置范围和步长
  39. self.seconds.setRange(0, 59)
  40. self.seconds.setSingleStep(1)
  41. # 设置当前值
  42. self.seconds.setValue(0)
  43. self.seconds.setStyleSheet(self.defStyleSheet)
  44. label = QLabel("秒", self)
  45. # 设置位置x,y,w,h
  46. label.setGeometry(270, 20, 40, 40)
  47. label.setStyleSheet(self.defStyleSheet)
  48. # 在窗口里面添加控件
  49. self.btn = QPushButton("开始", self)
  50. self.btn.setGeometry(140, 80, 100, 60)
  51. self.btn.setStyleSheet(self.defStyleSheet)
  52. self.btn.released.connect(self.btnClick)
  53. self.mytimer = QTimer(self)
  54. self.mytimer.timeout.connect(self.onTimer)
  55. self.mytimer.stop()
  56. self.isStart = False
  57. # 开始 OR 停止
  58. def btnClick(self):
  59. if self.isStart:
  60. self.mytimer.stop()
  61. self.btn.setText("开始")
  62. self.isStart = False
  63. else:
  64. pygame.mixer.music.stop()
  65. self.mytimer.start(1000)
  66. self.btn.setText("停止")
  67. self.isStart = True
  68. self.minute.setEnabled(not self.isStart)
  69. self.seconds.setEnabled(not self.isStart)
  70. # 倒计时回调
  71. def onTimer(self):
  72. secondsValue = self.seconds.value()
  73. minuteValue = self.minute.value()
  74. if self.seconds.value() == 1 and minuteValue == 0:
  75. self.seconds.setValue(secondsValue - 1)
  76. print("时间到了")
  77. self.btnClick()
  78. self.pygame_load()
  79. return
  80. if self.seconds.value() == 0:
  81. if minuteValue == 0:
  82. print("时间到了")
  83. self.btnClick()
  84. self.pygame_load()
  85. else:
  86. self.minute.setValue(minuteValue - 1)
  87. self.seconds.setValue(59)
  88. else:
  89. self.seconds.setValue(secondsValue - 1)
  90. def pygame_load(self):
  91. pygame.mixer.music.play()
  92. if __name__ == '__main__':
  93. # 2.创建一个 QApplication 对象,指向QApplication ,接受命令行参数
  94. app = QApplication(sys.argv)
  95. # 3. 创建一个 QWidget对象
  96. w = XiaoYa()
  97. # 5. 展示窗口
  98. w.show()
  99. # 程序进行循环等待状态
  100. app.exec()
  • 最终效果

  • 打包成exe文件
pyinstaller -F -p . main.py
  •  注意事项
  1. 里面有两个静态资源需要自行替换一下
  2. 静态资源目前我试了没有成功打包到exe文件里面,所以打包成exe后静态资源外面还是需要
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/854057
推荐阅读
相关标签
  

闽ICP备14008679号