本文分两部分,先介绍python实现模拟上下课定时铃声播放与关闭,再讲python程序打包成小型exe文件。
一、python实现模拟上下课定时铃声播放与关闭
不说废话,完整代码奉上。
import sys
import time
import datetime
import pygame
# 实现闹钟功能
def alert():
music = input("请设置铃声(路径): ") # D:\离骚-易烊千玺.mp3
study_time = int(input("请设置上课时长(分钟): "))
rest_time = int(input("请设置休息时长(分钟): "))
start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
while True:
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sys.stdout.write('上课中:'+now + '\r')
sys.stdout.flush()
time.sleep(1)
t1 = datetime.datetime.strptime(start, '%Y-%m-%d %H:%M:%S') # 上课时间
t2 = datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S') # 下课时间
if (t2 - t1).seconds == (study_time * 60):
pygame.mixer.init() # 初始化
pygame.mixer.music.load(music) # 加载音乐
pygame.mixer.music.play() # 播放音乐
while 1:
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sys.stdout.write('下课中:'+now + '\r')
sys.stdout.flush()
if pygame.mixer.music.get_busy(): # 音乐放
if ((datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S') - t2).seconds < (rest_time * 60)): # 时间未到
time.sleep(1)
else: # 时间到了
pygame.mixer.music.stop()
break
else: # 音乐停
if ((datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S') - t2).seconds < (rest_time * 60)): # 时间未到
pygame.mixer.music.play()
time.sleep(1)
else: # 时间到了
break
start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def main():
alert()
if __name__ == "__main__":
main()
该程序提供较为灵活的用户选项,可选择自己喜欢的背景音乐、上课持续时间、课间休息时间。当歌曲时间小于下课时间,则循环播放。
启动程序后,输入设置选项,便看开始模拟上下课情景了
二、python程序打包成小型exe文件
当别人要引用这个程序时,若要事先配置好python环境,未免有些麻烦,我们可将其打包成一个独立完整的exe文件,在win10系统下只要双击exe文件,便可畅快运行。
下面介绍利用pycharm建立虚拟环境打包文件,
1、打开pycharm,左上角依次点击 File、New Project 创建一个新项目
① 设置虚拟环境位置(可新建一个目录)
② 选择虚拟环境 Virtualenv
③ 选择纯净的用python官网安装好的python编译器,如果事先没安装可以按照提示安装即可(千万别选先去自己安装的anaconda内的python编译器,由于anaconda事先自动安装了大量的其他包,会使得最终打包的exe文件非常大)。
2、建完环境,建议重启pycharm,重新进入刚刚建的虚拟环境,左上角依次点击 File -> Setting,进入python interpreter,点击 + ,搜索安装上述程序需要的第三方包,一定要安装pyinstaller,用于后面打包程序(本程序只需再安装pygame即可,其余是自带的基础包)。安装成功后,关掉当前窗口。
3、然后在当前虚拟环境下新建脚本文件
4、找到最下面终端按钮,进入后运行 pyinstaller -F -w alarm.py,(-F打包成一个执行文件,-w 运行时取消命令行窗口)完成后,去到具体的虚拟环境目录,找到dist文件夹,里面便是最终生成的exe文件,本程序exe文件也才10M多一点。