用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)文章
Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)Dropout應(yīng)用詳解解
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中關(guān)于pytorch神經(jīng)網(wǎng)絡(luò)Dropout的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10python基礎(chǔ)教程之popen函數(shù)操作其它程序的輸入和輸出示例
popen函數(shù)允許一個程序?qū)⒘硪粋€程序作為新進(jìn)程啟動,并可以傳遞數(shù)據(jù)給它或者通過它接收數(shù)據(jù),下面使用示例學(xué)習(xí)一下他的使用方法2014-02-02pycharm重置設(shè)置,恢復(fù)默認(rèn)設(shè)置的方法
今天小編就為大家分享一篇pycharm重置設(shè)置,恢復(fù)默認(rèn)設(shè)置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10python 自動化將markdown文件轉(zhuǎn)成html文件的方法
這篇文章主要介紹了python 自動化將markdown文件轉(zhuǎn)成html文件的方法的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下2016-09-09Python中l(wèi)ambda表達(dá)式的用法示例小結(jié)
本文主要展示了一些lambda表達(dá)式的使用示例,通過這些示例,我們可以了解到lambda表達(dá)式的常用語法以及使用的場景,感興趣的朋友跟隨小編一起看看吧2024-04-04windows 10下安裝搭建django1.10.3和Apache2.4的方法
最近發(fā)現(xiàn)很多教程都是在linux上搭建,windows上似乎天生不太適合,但是我還是愿意試試這個坑。下面這篇文章主要給大家介紹了在windows 10系統(tǒng)下安裝搭建django1.10.3和Apache2.4的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04python入門學(xué)習(xí)之自帶help功能初步使用示例
這篇文章主要為大家介紹了python入門學(xué)習(xí)自帶help功能初步使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Python實現(xiàn)的銀行系統(tǒng)模擬程序完整案例
這篇文章主要介紹了Python實現(xiàn)的銀行系統(tǒng)模擬程序,結(jié)合完整實例形式分析了Python基于面向?qū)ο蟪绦蛟O(shè)計模擬的銀行系統(tǒng)登錄驗證、開戶、找回密碼、掛失、查詢、存取款、轉(zhuǎn)賬等功能相關(guān)操作技巧,需要的朋友可以參考下2019-04-04