Python

[python_gui] 2. Alarm 만들기(오류 및 안되는 점 정리)

콧등치기국수 2020. 10. 11. 15:25

휴일에 집에 있으면 하루종일 침대에 달라붙어 있게 되는 것 같아요.

평일에는 출근하느라고 시간이 없어서 공부시간이 적으니 휴일에 빡세게 해야하는데

맘과 몸은 다르게 움직이네요ㅎㅎ

 

그래서 지금은 꾸역꾸역 도서관에 와서 파이썬키고 알람을 만들고 있어요.

 

하지만 열심히 검색하고 코드도 쳐보고 하지만 정말 상상하지 못한 곳에서 문제가 빵빵 터지네요 

역시 실제로 해봐야 이런 게 문제가 되는구나 하고 알게 되는거 같아요.

 

그래서 앞으로 해야 할 것들과 현재 오류가 나는 점 등을 정리해보고 앞으로 그것들을 해결해 보도록 할거에요.

 

지금까지 만든 창

 

 

▶ 앞으로 할 것들 및 오류 정리

# set버튼 클릭
def set_alarm():
    # hour 입력 확인
    # h = int(hourTime.get())
    if hourTime.index("end") ==0:
        msgbox.showwarning("경고","시간(hour)을 입력해주세요")         
    elif 0<= int(hourTime.get()) <=24:
        # hour.set( Done")
        pass               # return : 전체 함수 빠져나감(set_alarm빠져나가기 때문에 밑에 분,초는 검사가 안됨)
    else:
        msgbox.showwarning("경고", "시간(hour)을 정확히 입력해주세요")   

    # min 입력 확인
    m = minTime.get()
    if len(m) ==0:
        msgbox.showwarning("경고","분(min)을 입력해주세요")
    elif 0 <= int(m) <= 60 :
        # min.set(" Done")
        pass
    else:
        msgbox.showwarning("경고", "분(min)을 정확히 입력해주세요")

    # sec 입력 확인
    s = secTime.get()
    if len(s) == 0:
        msgbox.showwarning("경고","초(sec)를 입력해주세요")
    elif 0<= int(s)<=60 :
        # sec.set(" Done")
        pass
    else:
        msgbox.showwarning("경고", "초(sec)를 정확히 입력해주세요")

    # 레이블 값 바꾸기
    if 0<=int(hourTime.get())<=24 and 0<=int(m)<=60 and 0<=int(s)<=60:
        label_var.set("Alarm has been set :)")
    else:
        label_var.set("Please check the time again.")

    while True:
        if int(hourTime.get()) == datetime.datetime.now().hour and int(minTime.get()) ==datetime.datetime.now().minute :
            print("Wake up")
            break

 

1. 메세지 박스 띄우기

  [o]  1) 시간 입력 창이 빈칸일 때

  [o]  2) 시간 범위를 초과해서 입력했을때 (예: hour칸에 "25"입력한 경우)

  [x]  3) 문자열 입력했을때

 

2. 알람기능 만들기

  [o]  1) 입력한 시간값과 현재시간과 비교하여 print()로 알람해주기

  [x]  2) print()말고 소리로 알려주기_winsound? pygame?

 

★ 오류 발생

시간 입력하고 set버튼 누른 상태_누른 시간에 그대로 멈춰 있음

 

1) set버튼 클릭해서 입력한 시간값과 현재시간을 비교하면 "응답없음"이 뜬다.

   '응답없음' 이기는 하지만 시간에 맞춰서 print()해주기는 함

--> github에서 다른 사람들이 만든 simple alarm clock에서도

     while True문을 사용해서 실행시켜 보니

     똑같이 '응답없음'이 떴음 다른 방법을 찾아봐야 할 것 같다.

     구글에서는 아무리 찾아봐도 다 비슷한 방법이고 내가 알아들을 수 있는게 별로 없어서

     해외 유튜버들이 올린 영상을 찾아볼 예정

 

2) set버튼 클릭하면 tkinter창에 있는 시간이 멈춘다.

   알람시간이 되어야 시간이 다시 흐른다.

--> While True문을 변형시켜서 같은 창이 문제인 건지 알아볼 수 있을까?

--> 같은 창에서 실행시켜서 시간이 멈추는 거라면 다른 창을 띄워서 거기서 알람을 설정하는 방법을 알아봐야겠다.

 

3) "Enter time in 24 hour format." 레이블이 set버튼을 눌러도 바뀌지 않고 알람시간이 되어야 바뀐다.

    Stringvar()를 이용해서 set버튼클릭시 "Alarm has been set :)"으로 바뀌어야 하는데 안된다.

--> set버튼 클릭시 label이 변하게 하는 대신

     메세지 박스를 띄워서 알람이 설정되었는지 알려줄 수도 있음.

     메세지 박스를 띄우는 게 더 확실히 알람 설정이 되었는지 알려줄 수 있을 것 같으므로

     label은 "Enter time in 24 hour format."으로 고정되도록 할 예정임.

 

3. Listbox를 추가해서 설정한 알람 뜨게 하기, 삭제도 추가

  1) listbox 추가해서 설정한 알람 나타나게 하기_1,2,3 순서로 이름붙여서

  2) 설정한 알람 중 삭제하고 싶은 것 삭제할 수 있도록 하기

 

 

 

 

오늘 중으로 오류들을 해결할 수 있도록 해봐야지!