- import sys
- from PyQt6.QtCore import QTimerEvent, QTime, QTimer
- from PyQt6.QtWidgets import QWidget, QApplication, QPushButton, QLabel, QLineEdit, QListWidget
- from PyQt6 import uic
- from PyQt6.QtCore import Qt
- from PyQt6.QtTextToSpeech import QTextToSpeech
- class MyWidget(QWidget):
- def __init__(self):
- super().__init__()
- ui = uic.loadUi("./cj.ui", self)
- self.Btn: QPushButton = ui.Btn
- self.system_time_label: QLabel = ui.label # 显示系统时间
- self.alarm_time_label: QLabel = ui.alarm_label # 显示“输入闹钟时间”
- self.line_edit: QLineEdit = ui.line_edit # 输入闹钟时间
- self.list_widget: QListWidget = ui.list_widget # 显示语言播报内容
- self.textToSpeech = QTextToSpeech()
- self.alarm_set = False
- self.alarm_time = None
- self.timer_id = None
- self.speech_count = 0
- # 信号的槽的连接
- self.Btn.clicked.connect(self.Btn_slot)
- # 按钮对应的槽函数
- def Btn_slot(self):
- if self.Btn.text() == "启动":
- self.alarm_time = self.line_edit.text() # 获取闹钟时间
- self.start_system_timer() # 启动系统时间更新定时器
- self.Btn.setText("关闭")
- else:
- self.killTimer(self.timer_id) # 关闭定时器
- self.Btn.setText("启动")
- # 启动系统时间更新定时器
- def start_system_timer(self):
- self.timer_id = self.startTimer(1000) # 每个1秒钟自动执行timerEvent
- # 重写定时器事件函数
- def timerEvent(self, e: QTimerEvent):
- if e.timerId() == self.timer_id:
- current_time = QTime.currentTime()
- current_time_str = current_time.toString("hh:mm:ss")
- # 更新系统时间标签
- self.system_time_label.setText(current_time_str)
- self.system_time_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
- # 检查是否到达闹钟时间
- if self.alarm_set and current_time_str == self.alarm_time:
- self.killTimer(self.timer_id) # 关闭系统时间更新定时器
- self.start_speech() # 开始语言播报
- # 开始语言播报
- def start_speech(self):
- message = "懒虫起床,好好学习,天天向上"
- for _ in range(5):
- self.textToSpeech.say(message)
- self.list_widget.addItem(message)
- self.speech_count += 1
- # 当窗口首次显示时,设置闹钟时间输入框的提示文字
- def showEvent(self, event):
- self.alarm_time_label.setText("输入闹钟时间")
- super().showEvent(event)
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- myWidget = MyWidget()
- myWidget.show()
- sys.exit(app.exec())
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |