Python利用PyQT5设置闹钟功能
作者:Python?集中营 发布时间:2023-05-08 15:34:08
标签:Python,PyQT5,闹钟
通过PyQt5实现设置一个小闹钟的功能,到了设置的时间后可以响起一段音乐来提醒。
导入UI界面组件相关的模块
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
导入应用操作相关的模块
import sys
from PyQt5.QtMultimedia import *
初始化函数 init_ui() 函数,PyQt5 界面布局使用了三种,分别是垂直化布局、水平化布局、栅格布局。
def init_ui(self):
self.setWindowTitle("小闹钟") # 设置应用标题
self.setWindowIcon(QIcon('clock.ico')) # 设置应用图标
form = QFormLayout() # 初始化一个表单布局
self.current_date_label = QLabel()
self.current_date_label.setText("当前时间:")
self.current_date_label_time = QLabel()
self.current_date_label_time.setText(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd'))
self.current_timer = QTimer()
self.current_timer.timeout.connect(self.show_current)
self.current_timer.start(1000)
self.timing_date_label = QLabel()
self.timing_date_label.setText("定时时间:")
self.timing_date_time = QDateTimeEdit()
self.timing_date_time.setDisplayFormat("yyyy-MM-dd HH:mm:ss")
self.timing_date_time.setDateTime(QDateTime.currentDateTime())
self.set_rightone_label = QLabel()
self.set_rightone_label.setText("设置铃声:")
self.set_rightone_box = QComboBox()
self.set_rightone_box.addItems(["冷漠 - 一路向北 (DJ版)","大城 - 下雪哈尔滨","许巍 - 时光"])
form.addRow(self.current_date_label,self.current_date_label_time)
form.addRow(self.timing_date_label,self.timing_date_time)
form.addRow(self.set_rightone_label,self.set_rightone_box)
hbox = QHBoxLayout() # 初始化水平布局
self.version = QLabel()
self.version.setText("公众号:[Python 集中营]")
self.start_btn = QPushButton()
self.start_btn.setText("开始")
self.start_btn.clicked.connect(self.start_btn_click)
hbox.addWidget(self.version)
hbox.addWidget(self.start_btn)
vbox = QVBoxLayout() # 初始化垂直布局
vbox.addLayout(form)
vbox.addLayout(hbox)
self.setLayout(vbox) # 设置主布局
创建槽函数 show_current(),用于实时显示时间的变化并将时间更新到QLabel组件上面,目前做的是秒级的时间更新。
def show_current(self):
'''
刷新当前时间显示、每隔一秒钟刷新
:return:
'''
current_time = QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd')
self.current_date_label_time.setText(current_time)
创建槽函数 timing_his(),监听定时时间是否到达。在定时时间到达时播放音乐,现在代码块中总共引入了三首歌曲,需要的可以按照自己喜好添加自己喜欢的歌曲。
def timing_lis(self):
if QDateTime.currentDateTime() < self.timing_date_time.dateTime():
print("[{}]:定时时间没有到达".format(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd')))
else:
print("[{}]:定时时间已经到达".format(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm:ss dddd')))
self.current_timer_lis.stop()
selected = self.set_rightone_box.currentText()
print("开始播放音乐:{}".format(selected))
url = QUrl.fromLocalFile("{}.mp3".format(selected))
self.player.setMedia(QMediaContent(url))
self.player.play()
创建槽函数 start_btn_click(),将该函数绑定开始按钮上用于启动闹钟。
def start_btn_click(self):
self.current_timer_lis = QTimer()
self.current_timer_lis.timeout.connect(self.timing_lis)
self.current_timer_lis.start(500)
小闹钟实现的主要代码块就是上面这些了。
补充
还可以不利用PyQT5,直接用Python实现闹钟功能,示例代码如下
音频文件放入和.py文件同级的目录下
import winsound # 导入此模块实现声音播放功能
import time # 导入此模块,获取当前时间
# 提示用户设置时间和分钟
my_hour = input("请输入时:")
my_minute = input("请输入分:")
flag = 1
while flag:
t = time.localtime() # 当前时间的 * 值
fmt = "%H %M"
now = time.strftime(fmt, t) # 将 * 值转化为包含时、分的字符串
now = now.split(' ') #以空格切割,将时、分放入名为now的列表中
hour = now[0]
minute = now[1]
if hour == my_hour and minute == my_minute:
music = 'Good Time.wav'
winsound.PlaySound(music, winsound.SND_ALIAS)
flag = 0
来源:https://www.cnblogs.com/lwsbc/p/15786367.html


猜你喜欢
- 1 Anaconda介绍概述Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了cond
- Flask数据模型和连接数据库flask是基于MTV的结构,其中M指的就是模型,即数据模型,在项目中对应的是数据库。flask与数据库建立联
- 实现对下一个单词的预测RNN 原理自己找,这里只给出简单例子的实现代码import tensorflow as tfimport numpy
- Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提
- 关于tensor.repeat()的使用考虑到很多人在学习这个函数,我想在这里提 一个建议:强烈推荐 使用 einops 模块中的 repe
- 引言:最近邻插值Nearest Neighbour Interpolate算法是图像处理中普遍使用的图像尺寸缩放算法,由于其实现简单计算速度
- 一、model.py1.1 Channel Shuffledef channel_shuffle(x: Tensor, groups: in
- 本文实例讲述了Python实现周期性抓取网页内容的方法。分享给大家供大家参考,具体如下:1.使用sched模块可以周期性地执行指定函数2.在
- 一、闭包1.1 三要素 必须有一个内嵌函数内嵌函数必须引用外部函数中变量外部函数返回值必须是内嵌函数1.2 语法# 语法def 外部函数名(
- ctrl + r => 输入drivers回车 => etc/hosts , 用记事本打开它,在 127.0.0.1 local
- 目录类空指向ES6 箭头函数vuetifyvue-cli异步和同步运行和部署TIPS排名不分先后最近好像都是只发了一些生活类,吐槽的一些 b
- 由于最近开始做一些go写的外围程序,因此开始关注go的日志,毕竟自带的logger模块功能较少。简单看了一些资料以后最开始使用seelog,
- 1.索引是什么1.1 认识索引先创建一个简单的DataFrame。myList = [['a', 10, 1.1], &nb
- 本文实例讲述了PHP策略模式定义与用法。分享给大家供大家参考,具体如下:概述策略模式属于对象的行为模式。其用意是针对一组算法,将每个算法封装
- 有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(
- 数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过pandas数据merge功能默认的行为,其实默认下求取的就是两
- select a.f_username from ( SELECT /*+parallel(gu,4)*/distinct gu.f_use
- 前言在写波段配准相关代码时经常需要用到tif影像的波段合成和分解,虽然可以用ENVI才处理,但是每次都要打开再设置一些参数有些麻烦,所以本着
- 做软件开发时基本都会涉及到数据的使用,比如最简单用户登录注册,这用户信息则需要使用数据库做存储管理。而在项目开发测试过程最常使用的数据库则是
- 发一个数字拼图游戏,有点小疑问前几天写得,其中一段代码还要感谢“簡簡單單愛妳”的提示,不过我还是不太明白, ,有点笨。 $(&qu