芜湖~FILAgiao小设计:系统强提醒番茄时钟(简易电脑版)

博主分享了一款自创的电脑版番茄钟程序,旨在提高工作效率并保护视力。程序采用Python编写,实现了25分钟工作+2分钟休息的间隔提醒,同时具备音量控制功能,防止工作时突然的响铃造成尴尬。通过EasyGUI库实现弹窗交互,用户可以选择休息或继续工作。此外,还增加了是否启用蜂鸣器提醒的选项,以及自定义工作和休息时间的功能。代码中包含了调整图片大小的辅助模块,以适应不同用户的个性化需求。
摘要由CSDN通过智能技术生成

最近视力一直低迷
去年准备法考和联考之后视力就一直不行
我很需要一个:(小声giaogiao)
电脑版 强提醒 的番茄时钟了!

代码没有交互界面,主要是我喜欢simple的,同时,一个优美的UI费时费力。但是现在的状态在编译和修改参数的过程中就比较麻烦。现在主要用户也就只有我和女朋友两个人(现在还有一个师姐),要是用的人多,设计一个漂亮的交互界面还是蛮有必要的

在这里插入图片描述

为什么要做一个这样的东西?而不用手机上的?

Reason:

1.我工作的时候手机不是经常放在身边,会放到教室的手机袋里,保持专注
2.如果用手机的番茄钟的话,经常会导致在开关番茄钟的时候就去看手机,浪费时间
3.手机番茄钟的界面不简洁,太复杂了

在这里插入图片描述

主要实现功能如下:

1.我的休息参数是【25min工作+2min休息】
(放松眼睛,时间一到就会有弹窗置顶提醒)
2.在休息的过程中为了防止一直盯着电脑,设置了:
1)开始休息的蜂鸣低音
2)结束休息的蜂鸣高音
3.我在使用电脑的时候,为了防止忽然喇叭大声叫出来导致

🎀 🍌 ⋆ 🍌🐲🐍 社会性死亡 ♤😡🍌 ⋆ 🍌 🎀😥

所以我在使用电脑的大部分时间,都是保持蜂鸣器关闭状态,这样蜂鸣器没法发出声音,这时候就绪要一个能:

1.读取蜂鸣器状态,

2.改变状态,

3.发出声音,

4.返回原有状态的代码

说到社会性死亡我就来劲了😋,又到了每篇必有的二次元宅舞推荐时间,但是我这次不想推荐二次元宅舞,我要推荐的是,陈冠希代言的绝对伏特加广告

别怕失败,大不了,从头来过。你懂的。

在这里插入图片描述
Bilibili链接:陈冠希 ABSOLUT(绝对伏特加)

具体设计部分:

{需要的包如下}:

# coding=utf-8
from time import  sleep
from easygui import buttonbox
from winsound import Beep
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume

1.蜂鸣器部分代码

def changeVolume(db):
    mute = volume.GetMute()		#查看是否静音
    if 1==mute:			#这里的Flag是用来确认我们是否静音的状态
        flag=True		#类似操作系统课学的‘烤面包机’概念
    else:
        flag=False

    if 1==mute:
        volume.SetMute(0,None)	#设置静音
        flag=True
    vr = volume.GetMasterVolumeLevel()
    volume.SetMasterVolumeLevel(-4.504, None) #设置
    Beep(db, 200) #两个参数代表音高(频率)和时长
    sleep(0.4) #睡0.4s,十分关键
    volume.SetMasterVolumeLevel(vr, None)	#回到之前设置的值
    if True==flag:
        volume.SetMute(1, None)
        flag=False

有趣的是,在我使用volume.SetMute(0,None)这个函数的时候,Pycharm没有提示我有这个函数,但是我把这个东西猜出来了。。。
如果相对 检测系统音量 还有疑问的话,可以看一下这一篇博客,老哥的代码写的很好,有点像Arduino的示例代码了,很不错:
上链接
python获取windows当前音量值以及调节音量(pycaw模块)

2.EasyGUI弹窗部分(我选用的是buttonbox)

while True:
    choicess_list1=['Take a rest','Shut down']
    title1 = 'FILAgiao休息2min'
    # img1 = r'H:\tsts\pp\haitan1.jpeg'
    msg1 = '25分钟到了,休息一下做以下几件事\n\n1.看向窗外,放松身心\n\n2.转眼,按摩眼睛\n\n3.过去25分钟做了什么?下一个25分钟要做什么?\n'
    changeVolume(400)		#上文中定义的函数
    g=buttonbox(title=title1,msg=msg1,choices=choicess_list1)
    if 'Shut down'==g:
        break		#一直循环就可以,就不用die()这种会加大包容量的东西了
    else:
        sleep(120)	
        # 
    title2 = '开始工作&高效率!'
    choicess_list2 = ['Start working!', 'Shut down']
    msg2 = '开始工作!\n\n爱你小小鱼😘!'
    img2 = r'H:\tsts\pp\elon1.jpg'	#放一手偶像Elon的照片
    changeVolume(700)
    k=buttonbox(title=title2,msg=msg2,image=img2,choices=choicess_list2)
    if 'Shut down'==k:
        break
    else:
        sleep(1500)

这里使用了Buttonbox作为我的弹窗,对是否还要继续进行工作&或者是休息进行反馈,工作的话就是点击工作(或者休息)按钮,反之就点击shut down按钮

在你设置了两个参数之后,我的东西就开始工作了,如果需要调整时间的话,就修改上面的代码中的这两个参数
sleep(120)	
sleep(1500)	
#我的休息参数是【25min工作+2min休息】,女友是【45,15】

最后,可以在你的弹出的弹窗中设置一张照片,你的电脑的exe上可以看到,但是如果需要在打包之后的exe给别人,将这张照片搞上去的难度还是有点大,有点繁琐。根据“二八原则”,没必要做的十全十美,这就算了。
(因为pyinstaller不是很会,我打的包有点大)
***(由于路径没有变化的原因,在自己的电脑上,打包过图片还是可以使用的)***请看后面,此问题已解决,让对方的电脑上也创建一个相同的文件夹,放一张相同命名的照片就可以了

打包的代码👇

//////////////////////////////////////////////
pip install pyinstaller [-i 有必要的话可以加个源]
//////////////////////////////////////////////
pyinstaller -F -w eye_protection.py
//////////////////////////////////////////////

-w是没有控制台,因为尽量简单,就没做输入,就不需要控制台了

所以女仔的版本是没有Elon Musk的,她也不是很喜欢Musk🐷

最后,如果需要的话,可以设置成为开机自启动,将生成的exe放到我的电脑这个文件夹中就可以了!
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

或者%programdata%\Microsoft\Windows\Start Menu\Programs\Startup 二选一
  在这里插入图片描述

Warning:如果开机重启之后发现程序还是在自启动,但是那个文件夹里的东西没了,不要再去存一遍!这个文件夹的工作机制就是自动隐藏的!
如果多存了,可以到任务管理器------启动中找到这个EXE process,右键打开文件夹,删除就可以了
在这里插入图片描述
(好离谱,怎么现在又会有了23333)

最近有点忙,本来不应该花时间做这个东西了,但是还是护眼任务紧急,得搞一个这个,这个月还是要保持高效率啊,马上要出联考成绩了,有点紧张。。。

不过问题不大,相信自己,紧张也没用,只不过是换一条路得问题,也没啥好说了,向伟大得Elon Musk 致敬,向美丽的小小鱼同志致敬。Salute!

我可太牛了
🅸 🅰🅼 🅵🅸🅻🅰🅶🅸🅰🅾😝
//我是分割线/
在后来的日子里我也觉得有点难用,师姐问我能不能再做一个比较顺手的,后来也对代码进行了修改,大概就是以下功能:
第一张初始化提醒图片

通过choicebox进行设置调整
在这里插入图片描述

主要就是以上几个功能,就是对一些参数进行了修正和更改,不知道最后用起来怎么样,后续也可以继续改进,接下来上代码:

# coding=utf-8
from time import  sleep
from easygui import buttonbox,choicebox
from winsound import Beep
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume

devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))

def changeVolume(db):
    mute = volume.GetMute()
    if 1==mute:
        flag=True
    else:
        flag=False

    if 1==mute:
        volume.SetMute(0,None)
        flag=True
    vr = volume.GetMasterVolumeLevel()
    volume.SetMasterVolumeLevel(-4.504, None)
    Beep(db, 200)
    sleep(1)
    volume.SetMasterVolumeLevel(vr, None)
    if True==flag:
        volume.SetMute(1, None)
        flag=False
flag=-1
while True:
    if -1==flag:
        first='需要蜂鸣器提醒吗?\n(如果用了提醒可能会导致听歌啥的时候声音有点大)'
        first0='程序初始化设置'
        choicess_list0 = ['需要', '不要','不干了']
        giao = buttonbox(title=first0, msg=first, choices=choicess_list0)
        if giao=='需要':
            flag=1
        elif giao=='不要':
            flag=0
        else:
            break
        # 
    title2 = '开始工作&高效率!'
    choicess_list2 = ['25+2', '45+5','不干了']
    msg2 = '开始工作!\n\n加油!'
    # img2 = r'H:\tsts\pp\elon1.jpg'
    if flag==1:
        changeVolume(600)
    k=choicebox(title=title2,msg=msg2,choices=choicess_list2)
    if '不干了'==k:
        break
    elif '25+2'==k:
        sleep(1500)#1500
    else:
        sleep(2700)#2700
    choicess_list1 = ['Take a rest', '不干了']
    title1 = '斐乐同学的番茄时钟'
    # img1 = r'H:\tsts\pp\haitan1.jpeg'
    msg1 = '时间到了,休息一下做以下几件事\n\n1.走动一下,看向窗外,放松身心\n\n2.转转眼,按摩眼睛\n\n3.这段时间做了什么?下段时间要做什么?\n'
    if flag==1:
        changeVolume(400)
    g = buttonbox(title=title1, msg=msg1, choices=choicess_list1,image='D:/FILAgiao/xiuxi.jpg')

    if '不干了' == g:
        break
    elif '25+2' == k:
        sleep(120)#120
    else:
        sleep(300)#300

在这里插入图片描述

导入图片之问

我目前还不知道怎么直接把图片打包到exe里面,但是如果用文件位置的话,却可以很好的导入,并且保证对方有最够的修改的可能。但是有一个问题就是,许多人的图片不是很合适,对于这种弹窗来说可能太大了,我们可以通过写一个改变图片大小的文件,changesize.py来实现改变文件的大小,方便师姐使用帅哥照片当弹窗背景。
上代码:

# coding=utf-8
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Created by victor

# 本模块的功能:<更改图片尺寸>

import os
import os.path
from PIL import Image
import easygui
'''
filein: 输入图片
fileout: 输出图片
width: 输出图片宽度
height:输出图片高度
type:输出图片类型(png, gif, jpeg...)
'''
def ResizeImage(img, fileout, width, height, type):

  out = img.resize((width, height),Image.ANTIALIAS)
  #resize image with high-quality
  out.save(fileout)
if __name__ == "__main__":
    filein = easygui.fileopenbox()
    filein.replace('\\','/')

    # for i in range(len(filein)):
    #     if filein[-i-2]=='\\':
    #         filein=filein[-i-2,:]
    giao=filein.split('\\')
    fileout='\\'.join(giao[:-1])+'\\xiuxi.jpg'
    img = Image.open(filein)
    w = img.width  # 图片的宽
    h = img.height  # 图片的高
    xm=0
    for i in range(1000):
      if w/(i+1) <500 or h/(i+1)<300:
          xm=i+1
          break
    width= int(w/xm)
    height=int(h/xm)
    type =filein.split('.')[-1]
    ResizeImage(img, fileout, width, height, type)

enjoy your coding
i am filagiao

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值