【Python】Tkinter에 의한 60행으로 만드는 GUI 앱 「스톱워치」

소개



안녕하세요.
이번에는 「스톱워치」를 만들어 가고 싶습니다.
완성하면 이런 느낌으로 움직입니다!



환경


  • Windows 10 home
  • Python 3.7.1

  • 스톱워치 제작



    가져오기



    사용할 라이브러리는 다음 두 가지입니다.
    import tkinter as tk
    import time
    

    창 만들기


    import tkinter as tk
    import time
    
    class Application(tk.Frame):
        def __init__(self,master):
            super().__init__(master)
            self.pack()
    
            master.geometry("300x150")
            master.title("ストップウォッチ")
            master.config(bg="black")
    
    def main():
        win = tk.Tk()
        app = Application(master = win)
        app.mainloop()
    
    if __name__ == "__main__":
        main()
    

    이 프로그램으로 창을 만들어갑니다.
    사이즈는 300×150입니다. 제목 이름은 스톱워치입니다. 배경색을 검정색으로 합니다.
    자세한 내용은 【Python】Tkinter를 사용한 병아리(클래스화 기법) 문서를 참조하십시오.

    완성된 프로그램



    스톱워치.py
    import tkinter as tk
    import time
    
    class Application(tk.Frame):
        def __init__(self,master):
            super().__init__(master)
            self.pack()
    
            master.geometry("300x150")
            master.title("ストップウォッチ")
            master.config(bg="black")
    
            self.startTime=time.time()
            self.stopTime=0.0
            self.elapsedTime=0.0
            self.playTime=False
    
            self.canvas = tk.Canvas(master,width=290,height=80,bg="skyblue")
            self.canvas.place(x=3,y=10)
    
            tk.Button(master,text="リセット",command=self.resetButtonClick,width=10).place(x=10, y=110)
            tk.Button(master,text="スタート",command=self.startButtonClick,width=10).place(x=110, y=110)
            tk.Button(master,text="ストップ",command=self.stopButtonClick,width=10).place(x=210, y=110)
    
            master.after(50,self.update)
    
        def startButtonClick(self):
            if not self.playTime:
                self.startTime=time.time()-self.elapsedTime
                self.playTime=True
    
        def stopButtonClick(self):
            if self.playTime:
                self.stopTime=time.time()-self.startTime
                self.playTime=False
    
        def resetButtonClick(self):
            self.startTime=time.time()
            self.stopTime=0.0
            self.elapsedTime=0.0
            self.playTime=False
    
        def update(self):
            self.canvas.delete("Time")
            if self.playTime:
                self.elapsedTime=time.time()-self.startTime
                self.canvas.create_text(280,40,text=round(self.elapsedTime,1),font=("Helvetica",40,"bold"),fill="black",tag="Time",anchor="e")
            else:
                self.canvas.create_text(280,40,text=round(self.stopTime,1),font=("Helvetica",40,"bold"),fill="black",tag="Time",anchor="e")
    
            self.master.after(50,self.update)
    
    def main():
        win = tk.Tk()
        #win.resizable(width=False, height=False) #ウィンドウを固定サイズに
        app = Application(master=win)
        app.mainloop()
    
    if __name__ == "__main__":
        main()
    

    여기가 완성된 프로그램입니다.
    만들면서의 감상입니다만, 스타트하는 시간(이 프로그램이라고 startTime)이 중요하다고 생각했습니다. 알고리즘을 잘 모르는 경우 startTime의 값은 지금 무엇입니까? , 그 변화를 잘 봐 가면 이해할 수 있지 않을까 생각합니다!

    결론



    이상으로 「스톱워치」는 완성됩니다.
    여기까지 읽어 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기