基于Tkinter制作定时器,提醒做某事

基于Tkinter制作定时器


文章目录

  • 基于Tkinter制作定时器
  • 一、前言
  • 二、需要的模块
  • 三、tkinter最简单的使用
  • 四、无边框tkinter窗口的创建
  • 五、时间的获取
  • 六、完整代码
  • 七、演示效果


一、前言

对于喜欢用电脑的人来说,

一旦往那里一坐,就很容易忘记时间,

接触到Python的我们,当然是要自己DIY一个闹钟啦,而且一定要醒目!

这个时候我就想到了tkinter

二、需要的模块

  • tkinter
  • datatime
  • time

三、tkinter最简单的使用

import tkinter

root = tkinter.Tk()

root.mainloop()

导入tkinter,实例化一个Tk类,进入主循环,完成,一个窗口就创建好了,

像下面这样:
基于Tkinter制作定时器,提醒做某事_第1张图片

四、无边框tkinter窗口的创建

root.overrideredirect(True)

把窗口的边框给去掉,用上面这个函数,参数设置为True就可以了

root.geometry("{0}x{1}+0+0".format(
    root.winfo_screenwidth(),
    root.winfo_screenheight()))

把窗口的长宽设置为屏幕的长宽,这样就能铺满整个屏幕,醒目!

这里用来设定字体,字体本身为黑色,字体背景为白色:

tkinter.Label(root, text=word_text, fg='black', bg='white',
              # 字体是微软雅黑, 大小是100
              font=('Microsoft YaHei', 100)
              # 把label这个控件居中
             ).place(anchor='center',
                     relx=0.5,
                     rely=0.5)

label控件一般是用来显示文字的,把label居中,

字体设置为微软雅黑,大小是100,字体颜色是黑色,label控件的颜色为白色

五、时间的获取

import datetime

def get_time():
    hour = datetime.datetime.now().hour
    minute = datetime.datetime.now().minute    
    return hour, minute

闹钟就是在固定的时间提醒你,

所以要获取现在的时间,和我们设定的时间进行对比,

到了时间,弹出窗口,达到提醒的效果

HOUR = 20  # 几点
MINUTE = 38  # 几分

MESSAGE = "是时候睡觉了!"
  • HOUR——多少点提醒
  • MINUTE——多少分钟提醒
  • MESSAGE——提醒时出现的字幕

六、完整代码

import datetime
import time
import tkinter

HOUR = 20  # 几点
MINUTE = 38  # 几分

MESSAGE = "是时候睡觉了!"

TIMES = 5  # 提醒多少次
INTERVAL = 2  # 每次弹窗窗口间隔的秒数

class Reminder(object):
    def __init__(self, word_text):
        # 初始化
        self.root = tkinter.Tk()

        # 把窗口的边框给去掉
        self.root.overrideredirect(True)

        # 设置窗口的大小
        self.root.geometry("{0}x{1}+0+0".format(
            self.root.winfo_screenwidth(),
            self.root.winfo_screenheight()))

        # 设置整个窗口的背景为白色
        self.root.configure(bg='white')

        # 这里用来设定字体,字体本身为黑色,字体背景为白色
        tkinter.Label(self.root, text=word_text, fg='black', bg='white',

                      # 字体是微软雅黑, 大小是100
                      font=('Microsoft YaHei', 100)

                      # label这个控件居中
                      ).place(anchor='center',
                              relx=0.5,
                              rely=0.5)

        # 在窗口创建之后执行 self.show 这个函数
        # 这里这样处理,才能达到后面窗口显示2秒再消失的效果
        self.root.after_idle(self.show)

    def hide(self):
        """
        隐藏窗口并退出
        """
        self.root.withdraw()
        self.root.quit()

    def show(self):
        """
        显示窗口,持续2秒钟
        """
        self.root.deiconify()
        self.root.after(1000 * 2, self.hide)

    def start(self):
        """
        进入死循环,这样窗口才能一直存在
        """
        self.root.mainloop()


def get_time():
    hour = datetime.datetime.now().hour
    minute = datetime.datetime.now().minute    
    return hour, minute


def prompt():
    """
    弹出窗口
    """
    root = Reminder(MESSAGE)
    root.start()

    time.sleep(INTERVAL)


def main():
    # 这里的while循环是为了保证时间没到,脚本不会退出
    while True:

        hour, minute = get_time()

        # 判断小时数和分钟数
        if hour == HOUR and minute >= MINUTE:

            # 一般这里都是一个字母i,
            # 我这里纯粹就想循环五次
            # Python里面就可以用 _ 来替代
            for _ in range(TIMES):
                prompt()
            break

if __name__ == '__main__':
    main()

七、演示效果

定时器


你可能感兴趣的:(python树有颜如意,python,开发语言)