파이썬 타이머 버튼이 눌렸을 때 시간이 멈추도록

조회수 343회

제가 학교세특 활동으로 타이머를 만들고싶은데요.

지금 시간 카운팅되는거랑 버튼이랑은 만들었는데 버튼이 눌렸을 때 시간이 멈추게하는걸 어떻게 해야하는지 모르겠어요.

배운거 응용하는거라 이미 써논건 최대한 안건드리고 멈추는 기능만 추가할 수 있으면 좋겠는데 가능할까요? 설마 다 뜯어 고쳐야 한다거나 그러진 않겠죠?ㅜㅜ

제 생각엔 클릭버튼 함수에 카운트 멈추는 기능을 추가하면 될거같은데 어떻게 해야할지 모르겠네요.

window = tkinter. Tk()
window.title("스톱워치")

def clickButton():
    label1[“text"] = “타이머 멈춤"
cnt = 0
def countUp():
    global cnt
    cnt = cnt + 1
    label2["text"] = cnt
    window.after(1000,countUp)

window.geometry ("500×400")
label1 = tkinter.Label (window, text="타이머 작동중", font=(systen" , 25))
label1.place(x=150, y=160)

button1 = tkinter.Button (window, text="STOP!", font=("System", 50), command=clickButton)
button1.place(x=150, y=250)

label2 = tkinter.Label(text="00",  font=("Times New Roman" , 80))
label2.pack()

window.after (1000, countUp) 
window.mainloop()

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    단순하게 무조건 돌아가게 되어있는 after 함수를 글로벌 변수(아래 코드에서는 starter)로 제어하게끔 하면될거같아요. starter가 True 일때만 타이머가 가게끔요! 응용해서 else 부분은 다시 한번 클릭했을때에 대해서 동작하게끔 넣어놨어요. 도움이 되셨으면 좋아요 한번 눌러주세요~!

    <코드>

    starter = True
    def clickButton():
        global cnt
        global starter
        if starter:
            starter = False
            label1["text"] = "타이머 멈춤"
            button1["text"] = "RESUME!"
        else:
            starter = True
            label1["text"] = "타이머 작동중"
            window.after(1000,countUp)
            button1["text"] = "STOP!"
    
    cnt = 0
    def countUp():
        global cnt
        global starter
        if starter:
            cnt = cnt + 1
            label2["text"] = cnt
            window.after(1000,countUp)
    
    
    • 멈추고 처음부터 다시 동작하게 하고 싶으시다면 else 아래에 cnt = 0 을 추가하시면 되겠네요. 어드미니 2022.12.23 17:27
    • 감사합니당 까미 2022.12.23 22:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)