用Python作一個久坐提醒小助手

不管是平常的工做仍是學習,現代年輕人在電腦屏幕時長數據能讓人驚掉下巴,繼而引起一系列身體不適的現象。小李也是久坐族中的一員,爲了時刻提醒本身起來活動活動,我開發了一款基於PythonGUI編程的久坐提醒小助手。編程

file

總體設計

總體的構思相似於一個番茄時鐘,提供一個倒計時功能而且在完成計時時發出警告。主要分爲以下幾個模塊,一是時間選擇模塊,二是按鈕模塊,控制計時開始、暫停以及恢復,三是倒計時顯示模塊,並在倒計時完成以後發出警告。segmentfault

file

模塊一

這一塊主要是組合框的設計,並傳遞所選擇時間的具體數值,很是簡單。函數

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])

模塊二

這一塊主要是三個按鍵功能的設計,是軟件的核心部分。實現的功能與按鈕的名稱徹底一致,當選擇了定時的時間,按下開始按鈕時,觸發倒計時的秒錶,並實時顯示;按下暫停以後須要暫停倒計時的計數;按下繼續以後須要繼續倒計時的計數。學習

file

其中倒計時的計算,我是經過利用獲取目標學習時長的數值加上當前時間計算獲得最終計時完成的時間,原本是很是完美的,可是引入了暫停和繼續開始這兩項功能以後須要作出必定程度的改進,那就是倒計時的計算須要補充暫停的時長。spa

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="繼續",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)

模塊三

把這個倒計時顯示模塊放置於最醒目的位置,並在完成當前計時時發出警告的消息。核心即是下面的update函數,實現倒計時的實時更新。設計

file

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)

最後,但願你們在工做學習之中,常常站起來活動活動筋骨,放鬆放鬆大腦,多呼吸新鮮的空氣,畢竟身體纔是革命的本錢!code

相關文章
相關標籤/搜索