Qt事件机制与画图思维导图+相关练习

打印 上一主题 下一主题

主题 1510|帖子 1510|积分 4530


  1. import sys
  2. from PyQt6.QtCore import QTimerEvent, QTime, QTimer
  3. from PyQt6.QtWidgets import QWidget, QApplication, QPushButton, QLabel, QLineEdit, QListWidget
  4. from PyQt6 import uic
  5. from PyQt6.QtCore import Qt
  6. from PyQt6.QtTextToSpeech import QTextToSpeech
  7. class MyWidget(QWidget):
  8.     def __init__(self):
  9.         super().__init__()
  10.         ui = uic.loadUi("./cj.ui", self)
  11.         self.Btn: QPushButton = ui.Btn
  12.         self.system_time_label: QLabel = ui.label  # 显示系统时间
  13.         self.alarm_time_label: QLabel = ui.alarm_label  # 显示“输入闹钟时间”
  14.         self.line_edit: QLineEdit = ui.line_edit  # 输入闹钟时间
  15.         self.list_widget: QListWidget = ui.list_widget  # 显示语言播报内容
  16.         self.textToSpeech = QTextToSpeech()
  17.         self.alarm_set = False
  18.         self.alarm_time = None
  19.         self.timer_id = None
  20.         self.speech_count = 0
  21.         # 信号的槽的连接
  22.         self.Btn.clicked.connect(self.Btn_slot)
  23.     # 按钮对应的槽函数
  24.     def Btn_slot(self):
  25.         if self.Btn.text() == "启动":
  26.             self.alarm_time = self.line_edit.text()  # 获取闹钟时间
  27.             self.start_system_timer()  # 启动系统时间更新定时器
  28.             self.Btn.setText("关闭")
  29.         else:
  30.             self.killTimer(self.timer_id)  # 关闭定时器
  31.             self.Btn.setText("启动")
  32.     # 启动系统时间更新定时器
  33.     def start_system_timer(self):
  34.         self.timer_id = self.startTimer(1000)  # 每个1秒钟自动执行timerEvent
  35.     # 重写定时器事件函数
  36.     def timerEvent(self, e: QTimerEvent):
  37.         if e.timerId() == self.timer_id:
  38.             current_time = QTime.currentTime()
  39.             current_time_str = current_time.toString("hh:mm:ss")
  40.             # 更新系统时间标签
  41.             self.system_time_label.setText(current_time_str)
  42.             self.system_time_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
  43.             # 检查是否到达闹钟时间
  44.             if self.alarm_set and current_time_str == self.alarm_time:
  45.                 self.killTimer(self.timer_id)  # 关闭系统时间更新定时器
  46.                 self.start_speech()  # 开始语言播报
  47.     # 开始语言播报
  48.     def start_speech(self):
  49.         message = "懒虫起床,好好学习,天天向上"
  50.         for _ in range(5):
  51.             self.textToSpeech.say(message)
  52.             self.list_widget.addItem(message)
  53.             self.speech_count += 1
  54.     # 当窗口首次显示时,设置闹钟时间输入框的提示文字
  55.     def showEvent(self, event):
  56.         self.alarm_time_label.setText("输入闹钟时间")
  57.         super().showEvent(event)
  58. if __name__ == "__main__":
  59.     app = QApplication(sys.argv)
  60.     myWidget = MyWidget()
  61.     myWidget.show()
  62.     sys.exit(app.exec())
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表