使⽤Python写⼀个定时锁屏软件
⽂章⽬录
python官方文档中文版初衷
突发奇想写定时锁屏软件,是想限制连续专注时间,做到劳逸结合。最好是每45分钟休息⼀下,读篇⽂章/散个步/聊聊天。
操作系统Win10,
语⾔版本Python3.7.6
开发环境Pycharm
设计
1.实现锁屏
代码:
# -*- coding: UTF-8 -*-
from ctypes import*
user32 = windll.LoadLibrary('user32.dll')
user32.LockWorkStation()
测试效果:运⾏.py⽂件,系统会直接进⼊锁屏状态,需要输⼊锁屏密码来解锁。
参考:《⽤python写个⼀键锁屏的⼩脚本》,
地址editor.csdn/md/?articleId=112380986
2.实现计时秒表
要求:
计时可见。
通过GUI(图形⽤户界⾯)进⾏操作。
计算时间差:
time.time()返回当前时间的时间戳。
tkinter库:
tkinter是⼀个使⽤Python语⾔构建的GUI⼯具包。允许采⽤GUI的⽅式执⾏你的Python脚本。
事件的监听:Anything that happens in a user interface is an event.
窗⼝的组件:GUI elements, such as buttons, menus and various kinds of entry fields and display areas.
We call these elements widgets.
窗⼝的树型结构:We are going to construct a tree of widgets for our GUI – each widget will have a parent widget, all the way up to the root window of our application.
Python中⽂版官⽅⽂档:
(2)⽂档可以慢读,程序可以先写
测试程序:
import time
star = time.time()
def gettime():
elap = time.time()- star # 获取时间差
hours =int(elap /3600)
minutes =int(elap /60- hours *60.0)
seconds =int(elap - minutes *60.0)
var.set('%02d:%02d:%02d'%(hours, minutes, seconds))
root.after(1, gettime)# 每隔1ms调⽤函数⾃⾝获取时间
root = tkinter.Tk()
root.title('电⼦时钟')
var = tkinter.StringVar()
lb = tkinter.Label(root, textvariable=var, fg='orange', font=("微软雅⿊",100))# 设置字体⼤⼩颜⾊lb.pack()
gettime()
root.mainloop()
测试效果:
使⽤到的tkinter内容:
tk = tkinter.TK()# 创建⼀个窗⼝的实例对象
tk.title()# 设置窗⼝标题
tkinter.Stringvar()# 窗⼝变量
lb = tkinter.Label(text="", fg="", bg="")# 窗⼝标签,包含窗⼝变量
lb.pack()# ⼀种理解是绑定事件
tk.mainloop()# 进⼊事件循环,保持监听事件
3.重新分析需求。
实现了计时器、锁屏的基本功能,接下来重新分析需求。
分析需求:
需要输⼊时间吗,或采⽤定长时间锁屏?定长。
突然想到输⼊时间,可以有包时的效果,更改需求为输⼊时间。
需要暂停或终⽌计时吗?不需要。
4.输⼊时间
测试代码:
global setime
setime =())
root2.destroy()
def time_set():
global entry1, root2, setime
root2 = tkinter.Tk()
root2.title('设置时间')
lb = tkinter.Label(root2, text="输⼊锁屏Minutes:")
lb.pack()
entry1 = tkinter.Entry(root2)
entry1.pack()
anniu = tkinter.Button(root2, text='GO', command=get_text) anniu.pack()
root2.mainloop()
5.集成测试
测试代码(较单元测试略有修改):
# -*- coding: UTF-8 -*-
import tkinter
import time
from ctypes import*
def gettime():
elap = time.time()- star # 获取时间差
hours =int(elap /3600)
minutes =int(elap /60- hours *60.0)
seconds =int(elap - minutes *60.0)
var.set('%02d:%02d:%02d'%(hours, minutes, seconds))
root.after(1, gettime)# 每隔1ms调⽤函数⾃⾝获取时间
if minutes > setime-1:
user32 = windll.LoadLibrary('user32.dll')
user32.LockWorkStation()
exit(0)
def timing():# 计时器
global root, var, star
star = time.time()
root = tkinter.Tk()
root.title('计时器')
var = tkinter.StringVar()
lb = tkinter.Label(root, textvariable=var, fg='orange', font=("微软雅⿊",100))# 设置字体⼤⼩颜⾊ lb.pack()
gettime()
root.mainloop()
def get_text():
global setime
setime =())
root2.destroy()
def time_set():
global entry1, root2, setime
root2 = tkinter.Tk()
root2.title('设置时间')
lb = tkinter.Label(root2, text="输⼊锁屏Minutes:")
lb.pack()
entry1 = tkinter.Entry(root2)
entry1.pack()
anniu = tkinter.Button(root2, text='GO', command=get_text)
anniu.pack()
root2.mainloop()
if __name__ =='__main__':
time_set()
timing()
测试图:
输⼊0会⽴即锁屏
输⼊2则关闭第⼀个窗⼝,打开第⼆个窗⼝开始计时:
6.打包成exe⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论