對于喜歡用電腦的人來說,
一旦往那里一坐,就很容易忘記時間,
接觸到Python的我們,當然是要自己DIY一個鬧鐘啦,而且一定要醒目!
這個時候我就想到了tkinter
1- 需要的庫:
- tkinter
- datetime
- time
都是Python系統(tǒng)自帶的庫,這里推薦用Python3
2- tkinter最簡單的使用
import tkinter
root = tkinter.Tk()
root.mainloop()
導(dǎo)入tkinter,實例化一個Tk類,進入主循環(huán),完成,一個窗口就創(chuàng)建好了,
像下面這樣:
3- 無邊框tkinter窗口的創(chuàng)建
root.overrideredirect(True)
把窗口的邊框給去掉,用上面這個函數(shù),參數(shù)設(shè)置為True就可以了
root.geometry("{0}x{1}+0+0".format(
root.winfo_screenwidth(),
root.winfo_screenheight()))
把窗口的長寬設(shè)置為屏幕的長寬,這樣就能鋪滿整個屏幕,醒目!
# 這里用來設(shè)定字體,字體本身為黑色,字體背景為白色
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居中,
字體設(shè)置為微軟雅黑,大小是100,字體顏色是黑色,label控件的顏色為白色
4- 時間的獲取
import datetime
def get_time():
hour = datetime.datetime.now().hour
minute = datetime.datetime.now().minute
return hour, minute
鬧鐘就是在固定的時間提醒你,
所以要獲取現(xiàn)在的時間,和我們設(shè)定的時間進行對比,
到了時間,彈出窗口,達到提醒的效果
5- 代碼
import datetime
import time
import tkinter
HOUR = 20 # 幾點
MINUTE = 38 # 幾分
MESSAGE = "是時候睡覺了!"
TIMES = 5 # 提醒多少次
INTERVAL = 2 # 每次彈窗窗口間隔的秒數(shù)
class Reminder(object):
def __init__(self, word_text):
# 初始化
self.root = tkinter.Tk()
# 把窗口的邊框給去掉
self.root.overrideredirect(True)
# 設(shè)置窗口的大小
self.root.geometry("{0}x{1}+0+0".format(
self.root.winfo_screenwidth(),
self.root.winfo_screenheight()))
# 設(shè)置整個窗口的背景為白色
self.root.configure(bg='white')
# 這里用來設(shè)定字體,字體本身為黑色,字體背景為白色
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)
# 在窗口創(chuàng)建之后執(zhí)行 self.show 這個函數(shù)
# 這里這樣處理,才能達到后面窗口顯示2秒再消失的效果
self.root.after_idle(self.show)
def hide(self):
"""
隱藏窗口并退出
"""
self.root.withdraw()
self.root.quit()
def show(self):
"""
顯示窗口,持續(xù)2秒鐘
"""
self.root.deiconify()
self.root.after(1000 * 2, self.hide)
def start(self):
"""
進入死循環(huán),這樣窗口才能一直存在
"""
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循環(huán)是為了保證時間沒到,腳本不會退出
while True:
hour, minute = get_time()
# 判斷小時數(shù)和分鐘數(shù)
if hour == HOUR and minute >= MINUTE:
# 一般這里都是一個字母i,
# 我這里純粹就想循環(huán)五次
# Python里面就可以用 _ 來替代
for _ in range(TIMES):
prompt()
break
if __name__ == '__main__':
main()
-
True
+關(guān)注
關(guān)注
0文章
9瀏覽量
11996 -
窗口
+關(guān)注
關(guān)注
0文章
66瀏覽量
10887 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4345瀏覽量
62901
發(fā)布評論請先 登錄
相關(guān)推薦
評論