保护眼睛小程序

import wx
import time
from datetime import datetime, timedelta

class MyFrame(wx.Frame):
def init(self):
super().init(None, title='用眼提醒', size=wx.Size(800, 600))
self.SetWindowStyle(wx.STAY_ON_TOP)

    # 创建自定义按钮
    self.b = wx.Button(parent=self, label='用眼已经超过20分钟了\n休息休息!!!\n点击文字可以关闭窗口', style=wx.BORDER_NONE)
    font = wx.Font(32, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
    self.b.SetFont(font)
    self.b.SetBackgroundColour(wx.Colour(255, 255, 255, 0))  # 设置透明背景
    self.b.SetForegroundColour(wx.Colour(0, 0, 0))  # 设置字体颜色为黑色
    self.Bind(wx.EVT_BUTTON, self.on_click, self.b)

    # 使用布局管理器
    vbox = wx.BoxSizer(wx.VERTICAL)
    vbox.Add(self.b, proportion=1, flag=wx.EXPAND | wx.BOTTOM, border=5)
    self.SetSizer(vbox)

    # 初始化倒计时相关变量
    self.remaining_time = 3  # 倒计时初始为3秒

def on_click(self, event):
    # 开始倒计时
    self.update_countdown()

def update_countdown(self):
    if self.remaining_time > 0:
        # 更新按钮文本
        self.b.SetLabel(f'20分钟后将再次提示\n {self.remaining_time} 秒后窗口自动关闭')
        self.remaining_time -= 1
        # 每秒调用一次更新倒计时
        wx.CallLater(1000, self.update_countdown)
    else:
        # 倒计时结束,关闭窗口
        self.close_window()

def close_window(self):
    self.Close()

def task():
app = wx.App()
frm = MyFrame()
frm.Centre()
frm.ShowFullScreen(True)
frm.Show()
app.MainLoop()

def main():
next_run_time = datetime.now() + timedelta(minutes=0)

while True:
    current_time = datetime.now()
    if current_time >= next_run_time:
        task()
        next_run_time = current_time + timedelta(minutes=20)

    time.sleep(1)

if name == "main":
main()

posted @ 2025-09-22 17:10  Clefairy  阅读(10)  评论(0)    收藏  举报