# encoding=utf-8
import random
import re
import time
# 异常详细的信息模块
import traceback
import logging
import tkinter # Python窗口类
import sys
def llog_print_yzy(*msg):
# llog_print_yzy('fa啊发', 3, sys._getframe().f_lineno) # call
# 最后一个参数是 日志打印的行号
last_index = len(msg) - 1
msg_str = ''
for i in range(last_index):
'''
定义函数不确定有多少参数时,可用*来表示多个参数
连接字符串的方式,可以让print的输出之间 去掉空格。
把'类型'放'值'前面,是因为可以对齐,否则用\t都不齐
不想要各个参数的打印,直接把下面这行打印去掉就好了:
'''
# print('params', i + 1, '----------- [类型]:', type(msg[i]), ',-----------[值]:', str(msg[i]))
msg_str += str(msg[i])
if i != last_index - 1:
msg_str += ', '
print('[Line]: ' + str(msg[last_index]), ', [message]: ', msg_str, end='\n\n')
# llog_print_yzy('fa啊发', 3, sys._getframe().f_lineno) # call
''' 每隔10分钟,屏幕会弹出窗口 提示休息 。。。缺点是 有的时候会静默弹出窗口,已修复 '''
# ----------------------------------------------------
def fun_bind_close(obj):
global window_tk
window_tk.destroy()
def get_py_window():
global window_tk
window_tk = tkinter.Tk()
window_tk.title('TK') # 设置窗口标题
# window_tk.geometry('1600x900') # 自己的笔记本的窗口大小。。如果设置了TK全屏模式,则这行代码失效
label_tk = tkinter.Label(window_tk, text='时间到了,双眼清澈的二哈\n右键刷新定时', font=('Arial', 30)) # 标签
label_tk.pack() # 显示标签
''' 右键释放时,触发。 否则只能右上角才能关掉窗口。 '''
window_tk.bind('<ButtonRelease-3>', fun_bind_close)
''' update: 下面这俩一结合,只能先把TK关了,才能继续看电脑上的其他内容 '''
window_tk.attributes('-fullscreen', True) # 全屏显示:没有右上角的windows属性按钮
window_tk.lift() # 不管是看视频,都让TK显示在窗口的最上层
window_tk.attributes('-topmost', True)
window_tk.mainloop() # 让窗口保持运行
# -----------------------------------------------
''' 定时计划 '''
def clocked_plan(start_time, end_time, repeat_interval):
llog_print_yzy(f'定时任务的start_time:{start_time}', sys._getframe().f_lineno)
llog_print_yzy(f'定时任务的end_time:{end_time}', sys._getframe().f_lineno)
# 转换成时间数组
timeArray = time.strptime(start_time, '%Y-%m-%d %H:%M:%S')
# 转换成时间戳
start_time = time.mktime(timeArray)
# 转换成时间数组
timeArray = time.strptime(end_time, '%Y-%m-%d %H:%M:%S')
# 转换成时间戳
end_time = time.mktime(timeArray)
while True:
current_time = time.time()
# 当前时间在[start_time, end_time]范围内时,就正常触发
if current_time >= start_time and current_time <= end_time:
llog_print_yzy('触发--', sys._getframe().f_lineno)
get_py_window() # 窗口运行结束之后,才进入下一行(很重要)
time.sleep(repeat_interval) # 以秒为单位, 间隔x秒、x*60分、x*60*60小时,去重复执行
# 当前时间还没到start_time,需要等待
elif current_time < start_time:
time.sleep(1) # 每一秒,检查当前时间 是否在[start_time, end_time]范围内
# 如果当前时间 已经超过end_time, 需要退出
elif current_time > end_time:
llog_print_yzy('定时任务 已在\"结束时间点\"结束', sys._getframe().f_lineno)
break
start_time = '2024-3-21 20:00:00'
end_time = '2025-11-25 20:00:00'
# 以秒为单位 间隔x秒、x*60分、x*60*60小时,去重复执行
# 如果只想运行一次:间隔设置大一点,区间不足以运行第二次。。缺点是要等sleep运行结束,然后更新当前时间,整个任务才会结束
repeat_interval = 3 * 60
clocked_plan(start_time, end_time, repeat_interval)
# -------------------------------------
Python屏幕提醒
于 2024-03-02 17:37:26 首次发布