用Python做一個久坐提醒小助手的示例代碼
不論是日常的工作還是學(xué)習(xí),現(xiàn)代年輕人在電腦屏幕時長數(shù)據(jù)能讓人驚掉下巴,繼而引發(fā)一系列身體不適的現(xiàn)象。小李也是久坐族中的一員,為了時刻提醒自己起來活動活動,我開發(fā)了一款基于PythonGUI編程的久坐提醒小助手。

整體設(shè)計
整體的構(gòu)思類似于一個番茄時鐘,提供一個倒計時功能并且在完成計時時發(fā)出警告。主要分為如下幾個模塊,一是時間選擇模塊,二是按鈕模塊,控制計時開始、暫停以及恢復(fù),三是倒計時顯示模塊,并在倒計時完成之后發(fā)出警告。

模塊一
這一塊主要是組合框的設(shè)計,并傳遞所選擇時間的具體數(shù)值,非常簡單。
label2=tkinter.Label(self.win,text='請選擇時間間隔:').place(x=40,y=20)
self.cv=tkinter.StringVar()
self.com=ttk.Combobox(self.win,textvariable=self.cv)
self.com.place(x=190,y=20)
self.com['value']=("15分鐘","30分鐘","45分鐘","60分鐘")
self.com.current(0)
self.com.bind("<<ComboboxSelected>>", self.get_time)
def get_time(self,event):
self.minute=int(self.com.get()[:-2])
模塊二
這一塊主要是三個按鍵功能的設(shè)計,是軟件的核心部分。實現(xiàn)的功能與按鈕的名稱完全一致,當(dāng)選擇了定時的時間,按下開始按鈕時,觸發(fā)倒計時的秒表,并實時顯示;按下暫停之后需要暫停倒計時的計數(shù);按下繼續(xù)之后需要繼續(xù)倒計時的計數(shù)。

其中倒計時的計算,我是通過利用獲取目標(biāo)學(xué)習(xí)時長的數(shù)值加上當(dāng)前時間計算得到最終計時完成的時間,本來是非常完美的,但是引入了暫停和繼續(xù)開始這兩項功能之后需要做出一定程度的改進(jìn),那就是倒計時的計算需要補充暫停的時長。
button=tkinter.Button(self.win,text="開始",command=self.alarm,width=6,height=1)
button.place(x=40,y=60)
button2=tkinter.Button(self.win,text="暫停",command=self.pause,width=6,height=1)
button2.place(x=180,y=60)
button3=tkinter.Button(self.win,text="繼續(xù)",command=self.go_on,width=6,height=1)
button3.place(x=320,y=60)
def alarm(self):
self.now=datetime.datetime.now()
delta=datetime.timedelta(minutes=self.minute)
self.target=self.now+delta
self.win.after(0,self.update)
def pause(self):
self.pause_time=datetime.datetime.now()
self.flag=True
self.win.after_cancel()
def go_on(self):
self.go_on_now=datetime.datetime.now()
self.pause_long=self.go_on_now-self.pause_time+self.pause_long
self.flag=False
self.win.after(0,self.update)
模塊三
把這個倒計時顯示模塊放置于最醒目的位置,并在完成當(dāng)前計時時發(fā)出警告的消息。核心便是下面的update函數(shù),實現(xiàn)倒計時的實時更新。

def update(self):
now=datetime.datetime.now()
countdown=self.target-now+self.pause_long
self.label=tkinter.Label(self.win,text=str(countdown)[:7],font=("黑體",70))
self.label.place(x=60,y=130)
if str(countdown)[:7]=='0:00:00':
tkinter.messagebox.showwarning(title="FBIWarning",message="您已工作{}分鐘,請馬上離開座位休息片刻!".format(self.minute))
self.flag=True
self.win.after_cancel()
if self.flag==False:
self.win.after(1,self.update)
最后,希望大家在工作學(xué)習(xí)之中,經(jīng)常站起來活動活動筋骨,放松放松大腦,多呼吸新鮮的空氣,畢竟身體才是革命的本錢!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
selenium+Chrome滑動驗證碼破解二(某某網(wǎng)站)
這篇文章主要介紹了selenium+Chrome滑動驗證碼破解二(某某網(wǎng)站),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Numpy中Meshgrid函數(shù)基本用法及2種應(yīng)用場景
NumPy包含很多實用的數(shù)學(xué)函數(shù),涵蓋線性代數(shù)運算、傅里葉變換和隨機數(shù)生成等功能,下面這篇文章主要給大家介紹了關(guān)于Numpy中Meshgrid函數(shù)基本用法及2種應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下2022-08-08
使用icecream實現(xiàn)優(yōu)雅調(diào)試Python代碼
在大型項目中,使用print()調(diào)試代碼可能導(dǎo)致終端輸出過多,難以分辨輸出結(jié)果與代碼的對應(yīng)關(guān)系,為了更清晰地調(diào)試,可以采用Icecream庫,本文介紹了如何使用icecream實現(xiàn)優(yōu)雅調(diào)試Python代碼,需要的朋友可以參考下2024-08-08
NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析
這篇文章主要為大家介紹了NCCL深度學(xué)習(xí)Bootstrap網(wǎng)絡(luò)連接建立源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python編程快速上手——Excel表格創(chuàng)建乘法表案例分析
這篇文章主要介紹了Python Excel表格創(chuàng)建乘法表,結(jié)合具體實例形式分析了Python接受cmd命令操作Excel文件創(chuàng)建乘法表相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2020-02-02

