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()