아날로그 시계 앱 만들기(11)
-
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 11부(기능 추가, 프로그램 정보)
프로그램을 만들었지만 이 프로그램이 누가 만들었는지 버전은 어떤지 표시가 없다.기존 옵션 메뉴에 프로그램 정보를 추가해본다. 우선 GPT에게 물어봤다. def __init__(self, root): self.options_menu.add_separator() # 구분선 self.options_menu.add_command(label="프로그램 정보", command=self.show_program_info) # 프로그램 정보 메뉴 항목 추가 # 프로그램 정보 표시 함수 추가 def show_program_info(self): tk.messagebox.showinfo("프로그램 정보", "제작자: HeumDuNeo\n버전: 1.0.0")옵션..
2024.11.04 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 10부(배포판 수정, 최적화 3)
이전까지 코드는 시계 테두리와 12시간 표시칸을 매초 갱신하고 있었다. 아래 기존 코드를 보자. def update_clock(self): # 시계를 업데이트하는 함수 self.canvas.delete("clock") # 기존 시계 삭제 # self.canvas.delete("background") # 기존 배경 삭제 # if self.background_image: # self.load_background_image(self.background_image_path) width = self.canvas.winfo_width() height = self.canvas.winfo_height() ..
2024.10.28 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 9부(배포판 수정, 최적화 2)
기존 코드는 창을 끌어 이동하거나, 창 크기를 변경하면 이벤트 호출로 배경 이미지를 다시 불러와 현재 창 크기에 맞게 조정했다. 생각보다 이게 버벅임을 유발한다. 지난 시간에 이어 최적화를 진행한다. 창을 이동하거나 크기를 변경할 때 발생한 엄청난 렉은 지난 시간에 고치긴 했다. 그래도 배경이미지를 다시 처리하는 데 있어 약간의 렉이 있었다. 이를 GPT에 고쳐달라고 했다. 처음엔 말귀를 못알아 듣고 엉뚱하게 코드를 고쳐 두어번의 시도 끝에 코드를 하나 받았다. 우선 기존 코드를 보자. def load_background_image(self, image_path): # 배경 이미지를 불러와서 캔버스에 표시하는 함수 self.canvas.delete("background")..
2024.10.28 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 8부(배포판 수정, 최적화 1)
이전엔 매초 시계의 모든 부분을 업데이트 했다. 시침, 분침, 초침은 물론이고 배경 사진까지 업데이트 했다. 처음엔 창 크기 변경에 따른 사진 크기 조정 때문에 그랬지만, 이제 최적화를 해볼까 한다. def update_clock(self): # 시계를 업데이트하는 함수 self.canvas.delete("clock") # 기존 시계 삭제 self.canvas.delete("background") # 기존 배경 삭제 if self.background_image: self.load_background_image(self.background_image_path)기존 코드 중 기존 배경 삭제를 매번 하는 코드 이걸 GPT에게 수정..
2024.10.27 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 7부(배포판 수정, 레지스트리를 사용해 저장하기)
이전 글에서 최종판에 문제점이 두 개 있었다. - 초기 상태에 사진이 등록되지 않았다. - 사진값이 들어가면 config.json 파일이 생긴다. 우선 두번째 문제인 config.json 파일을 없애보자. 기존의 코드 중 아래와 같은 부분이 있다. self.load_config() # 설정 파일 불러오기얼핏 봐도 설정값을 불러오겠다는 뜻인데, 더 자세히 알고 싶어 GPT에게 물어봤다. 이 함수는 특정 파일을 열도록 구현되어 있다고 한다. 그래서 config.json 을 자동으로 읽어들인다. 마찬가지로 save_config() 함수는 config.json 파일을 쓰도록 구현되어있다. config.json 파일을 쓰지 않을 것이기 때문에 이 코드는 이제 지워준다. 또 json 자체를 쓸 일..
2024.10.24 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 6부(배포판 만들기)
이전까진 파이썬 코드를 디버그 실행으로 실행시켰다. 프로그램을 실제로 사용하려면 독립 실행 파일로 만들어야한다.이를 위해 GPT에게 물어본다. 위 답변과 같이 cmd를 띄워 pip install pyinstaller 를 실행하면 알아서 설치한다. 설치가 끝나면 cmd에서 프로젝트 파일이 있는 파일 경로(파이썬 스크립트가 있는 폴더)로 이동하여 위의 명령어를 참조하여 cmd에 입력한다.참고로 나는 윈도우 11 23H2 버전을 사용중인데 윈도우 탐색기에서 마우스 우클릭 메뉴를 통해 해당 경로에서 터미널을 바로 띄울 수 있었다. 아니면 cd 명령어를 사용하여 경로를 바꾸자. 띄어쓰기가 있으면 반드시 "쌍따옴표"로 감싸줘야 한다. 예를 들면 cd "c:\사용자 경로\사용자 경로" 이런식이다. 설명대로 파..
2024.10.24 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 5부(1차 완성)
역시 canvas 버전이 아닌 일반 GPT 4o 버전으로 기존 시침 그리는 코드를 던져주고, 시계 시침을 그리는데 배경색이랑 헷갈릴 때가 있다며 윤곽선을 넣을 수 있냐고 물었다. 답은 간단했다. 시침을 아래처럼 두께만 두껍게 해서 다른색으로 한 번 더 그리라는 것이었다. ㅡ.ㅡ # Draw hour hand hour_angle = math.radians((hours + minutes / 60) * 30 - 90) hour_x = center_x + radius * 0.5 * math.cos(hour_angle) hour_y = center_y + radius * 0.5 * math.sin(hour_angle) self.canvas.create..
2024.10.23 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 4부
잘 작동하는 시계앱까지는 만들었지만 아쉬운 점이 있었다.이를 수정하고자 역시 GPT에 물어봤다. 수정된 코드를 보자 이전에 canvas.winfo_width()와 canvas.winfo_ height()로 단순히 가로 세로 픽셀 수를 취하던 것과 달리, 이미지의 원래 비율과 앱 화면의 비율을 비교해가며 사진 크기를 조정한다. 그런데 이 코드를 자세히 들여다 보면 내가 원하던 채우기 그런 기능이 아니고 사진 비율을 그대로 유지한다. 의미없는 개선(?)이 되었다. 어쨌든 다시 개선하면 되니 넘어가고, 윤곽선은 어떻게 처리했는지 살펴보자 시계 테두리와 위 이미지엔 없지만 시계의 12시 구분선을 단순히 하얀색으로 바꿨다.시침, 분침, 초침은 outline = "white" 라는 코드가 생겼는데 그럴싸 하지만 ..
2024.10.22 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 3부
이 오류를 해결하기 위해 아래와 같이 GPT에게 물어본다. 그리고 코드는 아래처럼 바꿔줬다. 그리고 실행해보니 잘 된다! 옵션으로 사진을 바꾸고 프로그램을 끄고 다시 실행해보니 바꾼 사진이 초기값으로 잘 나온다. 막상 완성된 프로그램을 보니 아직 부족해 보인다. - 시계에 시간 표시 구분이 없어 몇 시 몇 분인지 잘 확인이 안 된다. - 시침, 분침, 초침이 배경색에 잘 안 보이는 경우도 있다. - 사진 비율이 유지되지 않고 처음 사이즈인 400 * 400 픽셀에 맞게 일그러진다. - 창 크기를 조정하면 시계는 비율에 맞게 조정되지만, 사진은 초기 400 * 400 픽셀로 유지된다. 반영하기 위해 GPT에게 물어보자. 어떻게 수정됐는지 코드를 살펴본다.시계의 12시간 구분선은 위와 같은 코..
2024.10.22 -
초간단 아날로그 시계 만들기 - GPT를 이용한 코딩 연습 - 2부
GPT가 짜준 어플을 실행해보면 아무런 배경 사진이 없다. 하지만 나의 목표는 사진이 있어야한다. 코드를 천천히 살펴본다.class AnalogClockApp: def __init__(self, root): # ...... self.background_image = None if self.config.get("background_image"): self.load_background_image(self.config["background_image"]) # ...... 시계 앱에서 초기 세팅을 해주는 함수를 보면 self.background_image = None 으로 설정되어있다. None을 내가 원하는 그림으로 바꿔주면 될 듯하다..
2024.10.21