用Python做一個(gè)久坐提醒小助手的示例代碼
不論是日常的工作還是學(xué)習(xí),現(xiàn)代年輕人在電腦屏幕時(shí)長數(shù)據(jù)能讓人驚掉下巴,繼而引發(fā)一系列身體不適的現(xiàn)象。小李也是久坐族中的一員,為了時(shí)刻提醒自己起來活動活動,我開發(fā)了一款基于PythonGUI編程的久坐提醒小助手。
整體設(shè)計(jì)
整體的構(gòu)思類似于一個(gè)番茄時(shí)鐘,提供一個(gè)倒計(jì)時(shí)功能并且在完成計(jì)時(shí)時(shí)發(fā)出警告。主要分為如下幾個(gè)模塊,一是時(shí)間選擇模塊,二是按鈕模塊,控制計(jì)時(shí)開始、暫停以及恢復(fù),三是倒計(jì)時(shí)顯示模塊,并在倒計(jì)時(shí)完成之后發(fā)出警告。
模塊一
這一塊主要是組合框的設(shè)計(jì),并傳遞所選擇時(shí)間的具體數(shù)值,非常簡單。
label2=tkinter.Label(self.win,text='請選擇時(shí)間間隔:').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])
模塊二
這一塊主要是三個(gè)按鍵功能的設(shè)計(jì),是軟件的核心部分。實(shí)現(xiàn)的功能與按鈕的名稱完全一致,當(dāng)選擇了定時(shí)的時(shí)間,按下開始按鈕時(shí),觸發(fā)倒計(jì)時(shí)的秒表,并實(shí)時(shí)顯示;按下暫停之后需要暫停倒計(jì)時(shí)的計(jì)數(shù);按下繼續(xù)之后需要繼續(xù)倒計(jì)時(shí)的計(jì)數(shù)。
其中倒計(jì)時(shí)的計(jì)算,我是通過利用獲取目標(biāo)學(xué)習(xí)時(shí)長的數(shù)值加上當(dāng)前時(shí)間計(jì)算得到最終計(jì)時(shí)完成的時(shí)間,本來是非常完美的,但是引入了暫停和繼續(xù)開始這兩項(xiàng)功能之后需要做出一定程度的改進(jìn),那就是倒計(jì)時(shí)的計(jì)算需要補(bǔ)充暫停的時(shí)長。
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)
模塊三
把這個(gè)倒計(jì)時(shí)顯示模塊放置于最醒目的位置,并在完成當(dāng)前計(jì)時(shí)時(shí)發(fā)出警告的消息。核心便是下面的update函數(shù),實(shí)現(xiàn)倒計(jì)時(shí)的實(shí)時(shí)更新。
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&Matlab實(shí)現(xiàn)櫻花的繪制
正值櫻花飄落的季節(jié),本文將利用Python和Matlab分別繪制一顆櫻花樹,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起動手嘗試一下2022-04-04python基礎(chǔ)教程之popen函數(shù)操作其它程序的輸入和輸出示例
popen函數(shù)允許一個(gè)程序?qū)⒘硪粋€(gè)程序作為新進(jìn)程啟動,并可以傳遞數(shù)據(jù)給它或者通過它接收數(shù)據(jù),下面使用示例學(xué)習(xí)一下他的使用方法2014-02-02pycharm重置設(shè)置,恢復(fù)默認(rèn)設(shè)置的方法
今天小編就為大家分享一篇pycharm重置設(shè)置,恢復(fù)默認(rèn)設(shè)置的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10python 自動化將markdown文件轉(zhuǎn)成html文件的方法
這篇文章主要介紹了python 自動化將markdown文件轉(zhuǎn)成html文件的方法的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下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上似乎天生不太適合,但是我還是愿意試試這個(gè)坑。下面這篇文章主要給大家介紹了在windows 10系統(tǒng)下安裝搭建django1.10.3和Apache2.4的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04python入門學(xué)習(xí)之自帶help功能初步使用示例
這篇文章主要為大家介紹了python入門學(xué)習(xí)自帶help功能初步使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Python實(shí)現(xiàn)的銀行系統(tǒng)模擬程序完整案例
這篇文章主要介紹了Python實(shí)現(xiàn)的銀行系統(tǒng)模擬程序,結(jié)合完整實(shí)例形式分析了Python基于面向?qū)ο蟪绦蛟O(shè)計(jì)模擬的銀行系統(tǒng)登錄驗(yàn)證、開戶、找回密碼、掛失、查詢、存取款、轉(zhuǎn)賬等功能相關(guān)操作技巧,需要的朋友可以參考下2019-04-04