其他
Python帮助万千程序员远离猝死悲剧
The following article is from 清风Python Author 王翔丨
高以翔事件
11月27日在《追我吧》第九期节目的录制过程中,当期参与嘉宾高以翔奔跑时突然减速倒地,节目现场医护人员第一时间展开救治,并紧急将其送往医院。经过两个多小时的全力抢救,医院最终宣布高以翔心源性猝死。
猝死高危职业
很累的时候,有人关心你,安慰你,是你的幸运。
如果幸运没有降临到你头上,你要学会用自己的左手温暖自己的右手,
你要告诉自己,一切都会过去的。
久坐伤身
如此多的危害摆在面前,程序员们却经常因为赶需求、改BUG、查资料而一坐就是几个小时,不到尿憋不挪窝。(就在我写这篇文章的时候,已经在电脑边连续坐了三个小时了…)详细想想,你们是否也有过这些经历!
那么,今天我们用Python开发一个久坐提醒小工具,让每个程序员都能合理休息,定时起身走动走动,远离猝死危害!
程序设计
但是为了避免突如其来的锁屏,导致大家不适。所以会在锁屏前10秒给出弹窗提示。这样不至于太过突兀。可这个思路却引发了问题。
def notice():
message = Toplevel(root)
message.title('提示')
Label(message, text='主人,工作这么久了,准备休息下吧!'
, justify=CENTER, font=("黑体", '11')).grid()
time.sleep(3)
message.destroy()
自动锁屏
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.py
from 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()
return
countdown_sec -= 1
self.countdown_lb.after(1000, self.countdown_show(countdown_sec))
@staticmethod
def 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()
pyinstaller -F -w -i love.ico CareForCoders.py
进行打包-F 打包成单个文件,-w 取消cmd窗口 -i 添加软件的ico图标,来看看效果吧:
热 文 推 荐
↓↓↓ 不止技术 ↓↓↓