基于Tkinter制作定时器
文章目录
- 基于Tkinter制作定时器
- 一、前言
- 二、需要的模块
- 三、tkinter最简单的使用
- 四、无边框tkinter窗口的创建
- 五、时间的获取
- 六、完整代码
- 七、演示效果
一、前言
对于喜欢用电脑的人来说,
一旦往那里一坐,就很容易忘记时间,
接触到Python的我们,当然是要自己DIY一个闹钟啦,而且一定要醒目!
这个时候我就想到了tkinter
二、需要的模块
- tkinter
- datatime
- time
三、tkinter最简单的使用
import tkinter
root = tkinter.Tk()
root.mainloop()
导入tkinter,实例化一个Tk类,进入主循环,完成,一个窗口就创建好了,
像下面这样:
四、无边框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()
七、演示效果
定时器