既然他人不关心程序员,我们只能学会自我关怀了。今天我们就用Python来帮助万千程序员远离猝死!

久坐伤身

记得小米手环第一代发售的时候,就出了久坐提醒这个功能。“久坐”对人身的危害,早被世界所公认。具体有哪些呢?久坐会危害你的结肠、腰椎、颈部、心脏、胰腺、臀部、腿部。至于具体内容,大家可以下来仔细看看。
如此多的危害摆在面前,程序员们却经常因为赶需求、改BUG、查资料而一坐就是几个小时,不到尿憋不挪窝。(就在我写这篇文章的时候,已经在电脑边连续坐了三个小时了…)详细想想,你们是否也有过这些经历!
那么,今天我们用Python开发一个久坐提醒小工具,让每个程序员都能合理休息,定时起身走动走动,远离猝死危害!

程序设计

Python该如何完成久坐提醒这个功能呢?起初考虑定时发邮件、或者微信消息、短信等操作。但专注起来那里有时间关心这些?最后想想,不如开发一个GUI工具,允许程序员设置倒计时,然后到时见电脑自动锁屏,强迫大家起来走走,放松放松。所以有了如下的效果:

为了时间设置的范围全面,我添加了支持小数的方式,也是为了能方便录屏演示。
但是为了避免突如其来的锁屏,导致大家不适。所以会在锁屏前10秒给出弹窗提示。这样不至于太过突兀。可这个思路却引发了问题。

tkinter的message会阻塞进程,用户不点击取消掉消息窗口,就无法继续执行。为了能使弹出提示消息的同时,继续倒计时读秒,我们需要引入threading和Toplevel的模块,创建一个子窗口,并等待3秒后销毁它。

def notice():message = Toplevel(root)message.title('提示')Label(message, text='主人,工作这么久了,准备休息下吧!', justify=CENTER, font=("黑体", '11')).grid()time.sleep(3)message.destroy()

自动锁屏

熟悉bat脚本的童鞋都知道,bat中有shutdown 的命令,可以用来定时重启、关机,但却没有锁屏。查了很久没有结果,最终无奈只能通过pythonctypes模块调用windll,完成锁屏操作了,具体代码如下:

def close_windows():user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()

代码与使用

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @微信号   : King_Uranus
# @公众号    : 清风Python
# @GitHub   : https://github.com/BreezePython
# @Date     : 2019/11/28 23:23
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : CareForCoders.pyfrom tkinter import *
from tkinter.messagebox import showwarning, showinfo
import time
from ctypes import *
import threading# tkinter GUI工具居中展示
def center_window(master, width, height):screenwidth = master.winfo_screenwidth()screenheight = master.winfo_screenheight()size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2,(screenheight - height) / 2)master.geometry(size)# 锁定屏幕
def close_windows():user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()class CareForCoders:def user_setting(self):note = LabelFrame(root, text="说明", padx=10, pady=10,fg="red", font=("黑体", '11'))note.grid(padx=10, pady=2, sticky=NSEW)index = Label(note, text='程序猿/媛们,久坐伤身请务必定时休息!')index.grid()lb = LabelFrame(root, text="定时设置(支持小数)", padx=10,pady=10, fg="red", font=("黑体", '11'))lb.grid(padx=10, pady=2, sticky=NSEW)self.time_entry = Entry(lb)self.time_entry.grid(row=1, column=0)unit = Label(lb, text="(单位:分)")unit.grid(row=1, column=1, padx=5)self.countdown_lb = Label(text="休息倒计时:", justify=LEFT,font=("黑体", '11'))self.countdown_lb.grid(row=2)self.submit = Button(root, text="启动", width=8,command=lambda: self.get_countdown(self.time_entry.get()))self.submit.grid(row=3, column=0, pady=10)def get_countdown(self, countdown):try:_float_countdown = float(countdown)if _float_countdown <= 0:showwarning("提示:", message="倒计时必须为正数!")else:self.countdown_show(_float_countdown * 60)except ValueError:showwarning("提示:", message="请填写正确的倒计时!")def countdown_show(self, countdown_sec):self.time_entry.config(state=DISABLED)self.submit.config(state=DISABLED)time.sleep(1)self.countdown_lb.config(text="休息倒计时: %02d:%02d" %(countdown_sec // 60, countdown_sec % 60))root.update()# 为了避免突如其来的锁屏,倒计时30秒给出提示...if countdown_sec == 10:t = threading.Thread(target=self.notice)t.start()if countdown_sec < 1:# 启动锁屏操作close_windows()self.time_entry.config(state=NORMAL)self.submit.config(state=NORMAL)self.countdown_lb.config(text="欢迎主人回来...")root.update()returncountdown_sec -= 1self.countdown_lb.after(1000, self.countdown_show(countdown_sec))@staticmethoddef notice():# message = Toplevel(root)# message.title('提示')# Label(message, text='主人,工作这么久了,准备休息下吧!'#       , justify=CENTER, font=("黑体", '11')).grid()# time.sleep(3)# message.destroy()showinfo("提示",message='主人,工作这么久了,准备休息下吧!')if __name__ == '__main__':root = Tk()center_window(root, 260, 200)root.resizable(width=False, height=False)root.title('久坐提醒 by:清风Python')Main = CareForCoders()Main.user_setting()root.mainloop()

大家可以去我的github下载所有文章代码:           https://github.com/BreezePython

既然我们要造福万千程序员,那么当然最好可以打包成exe工具,便于脱离环境传播了!

使用命令pyinstaller -F -w -i love.ico CareForCoders.py进行打包
-F 打包成单个文件,-w 取消cmd窗口 -i 添加软件的ico图标,来看看效果吧:

用Python实现带GUI 的exe相关推荐

  1. python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器

    0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...

  2. python 布莱克舒尔斯_使用Python自带GUI tkinter编写一个期权价格计算器

    0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...

  3. Python实现带GUI和连接数据库的图书管理系统

    文章目录 前言 二.建立数据库library 2.1 book表 2.2 borrow表 2.3 user表 三.各个模块介绍 3.1 初始界面initial 3.2 manager登录注册模块 3. ...

  4. pythongui学生管理系统不需要链接数据库的完整代码_毕设——Python实现带GUI和连接数据库的图书管理系统!...

    前言 大三上学期的程序设计实训大作业,挑了其中一个我认为最简单的的<图书管理系统>来写.用python写是因为py有自带的GUI,即tkinter模块,对初次接触GUI的新手会比较友好.编 ...

  5. Python文件带图片打包exe(Pyinstaller)

    1.安装 pip install pywin32 pip install pyinstaller 2.打包 pyinstaller -F --noupx -w -i favicon.ico main. ...

  6. 用Python编写带GUI界面的漏洞检测工具(Struts2)

    朕终于在毕业前,摆脱了脚本小子的称号,在答辩老师面前顺利过关.凭借这朕的些许编程基础,终于做出了属于自己的一个脚本工具. Struts2漏洞是一款经典的漏洞,Struts2框架曾爆出过很多高危漏洞.朕 ...

  7. python界面gui随机生成器_Python 实现的、带GUI界面的词云生成器

    详细说明: "词云"就是数据可视化的一种形式,给出一段文本,根据文本中词语的出现频率而生成的一幅图像,从而过滤掉大量的文本信息,人们只要扫一眼就能够明白文章主旨,使得数据分析的结果 ...

  8. python自带gui_一个极简易上手的 Python GUI 库

    原标题:一个极简易上手的 Python GUI 库 很多同学学了 Python 之后都想开发带界面的程序,也就是 GUI 应用.一般用的比较多的 GUI 库是 Tkinter(Python 自带)和 ...

  9. python自带gui_Python GUI开发工具中五种类型的相关介绍

    Python这一计算机语言不仅具有十分简捷的操作功能,它还具有十分快速的相关开发功能,此文主要向你介绍的是关于Python GUI开发工具在实际相关应用操作过程中的具体操作,以及这几种开发工具相关内容 ...

最新文章

  1. VS Code 成主宰、Vue 备受热捧!2019 前端开发趋势必读
  2. 关于如何卸载Lenovo System Interface Foundation方法
  3. 趴在门口的云计算,盯上了屋内狂奔的CDN
  4. php 获取delete蚕丝_php结合Redis实现100万用户投票项目,并实时查看到投票情况的案例...
  5. 财务自由的味道!台积电股价连创新高,经营团队15人持股价值过亿
  6. typeof的用法 typeof的返回值是一个字符串 返回的字符串类别
  7. 密码学基础(三):非对称加密(RSA算法原理)
  8. 管理员权限自动注册Dll文件
  9. 如何升级composer
  10. Android UI 测试框架Espresso详解
  11. 2022.10.11
  12. 浅谈 Fhq-Treap
  13. 从iass向pass转型
  14. 叮咚小区官网新闻已不更新
  15. python抓取谷歌指数(Google Trends)
  16. Synchronized-偏向锁
  17. 《数字图像处理》主编:曹茂永
  18. oracle中数据库的说法,下列关于Oracle数据库说法正确的是)
  19. 香港机场到市区,更方便更便宜的路线
  20. 在python中布尔表达式的应用——判断语句

热门文章

  1. Android开发 实现跑马灯效果滚动字幕
  2. ITSM平台和CMDB集成的主要场景
  3. 如何是实现微信会员开卡组件中一个手机号绑定一个微信号(思路篇)
  4. 蒸发器分段设计matlab程序_蒸发器计算函数matlab
  5. 信用卡套现千万别触碰这两条红线,否则银行会盯上你!
  6. in作为介词的用法_语法专题:介词in的使用规则
  7. 手把手教你使用Python操控手机微信app(最新教程)
  8. 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
  9. Latex排版IEEE论文
  10. Samba客户端工具