AI 프로그래밍/OnB(One Button Executor)

One Button 프로그램 개발기 - 20

플로7 2024. 11. 12. 23:17
728x90
728x90

이번에 마주한 이슈는 '버튼 크기 수정'이다.

 

 OnB의 프레임은 버튼 크기에 따라 동시에 조정되고있다.

그리고 버튼 정렬 또한 프레임에 맞춰 정렬된다.

 

그러다 보니 버튼 크기를 수정 시 프레임과 버튼 간격이 조정되는

신기한 현상이 발생하고 있다. (모든것을 Cursor에게 맡긴 대가)

 

사실 그것까지는 괜찮다. '버튼 간격 수정' 기능을 넣은 이유가 그 때문이다.

하지만, 원인이 추측되지 않는 현상이 발견되었다.

 

사용자는 '버튼 크기 수정' 시 버튼의 가로 크기나 세로 크기를 조정 할 수 있다.

적용가능한 범위값은 20~100 이다. 

 

다른 값의 경우 버튼의 크기가 조절이 되지만, 요상하게 범위값이 40~55일 때는

버튼 사이 간격과 버튼 아래쪽의 공백값이 조절되는 현상이 있다.

버튼 크기 세로값: 40

 

버튼 크기 세로값: 55

 

이번 이슈 해결을 위해 버튼 크기를 결정하는 코드의 위치를 질문했다.

버튼 크기 수정시 버튼 크기에 영향을 끼치는 기능의 위치를 알려줘

 

그리고, 다음과 같은 코드블록을 발견 할 수 있었다.

    def update_button_sizes(self):
        for name, _, _, button in self.buttons:
            button.config(
                width=max(self.button_size[0]//10, 8),  # 최소 8자 너비
                height=max(self.button_size[1]//20, 2), # 최소 2줄 높이
                wraplength=self.button_size[0]
            )

 

위의 코드를 보자마자 생각한 것은 '도대체 왜 height 는 20을 나누는거지...?' 였다.

그리고 여태까지 버튼의 세로간격 또한 가로보다 늘 작았던 것을 기억해서

 

height=max(self.button_size[1]//20, 2) 의 '20' 이 원인인 것으로 추정되어

20 -> 10으로 값을 수정해 보니 아주 깔끔하게 문제가 해결되었다.

최근 시간이 날 때 마다 파이썬을 배우는 중 인데,

그 덕분인지 이번 이슈 해결을 쉽게 하였다.

 

ps. 다시 확인해보니 버튼의 세로값과 가로값이

동일함에도 크기가 다른 이슈가 생겼다.

원인을 파악해보니 저기에 적용되는 함수는 

Tkinter 이며, width는 문자 단위, height는 줄 단위로 계산이 된다고 한다.

새로운 것을 알게 되었다.

 

 

 

계속...

 

One Button 프로그램 개발기 - 21

기존에 사용하던 OnB의 버튼 크기 조정 등 기능이 워낙 말썽이 많아Tkinter대신 PyQt5를 시도해 보려고 한다.(찍먹만 해보기) 그 둘의 차이에 대해 표 작성을 ChatGPT에게 요청하였다. 구분TkinterPyQt5사

livelikeflow.tistory.com

처음 이야기

One Button 프로그램 개발기 - 1

 

728x90
728x90