Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter에서 widget.rowconfigure()와 grid_rowconfigure(), 어떤 것이 맞을까?

Tkinter로 애플리케이션을 개발할 때는 다양한 컴포넌트와 위젯을 활용해 기능을 확장할 수 있습니다. 이렇게 만든 위젯을 실제 화면에 배치하려면 지오메트리 매니저(Geometry Manager)를 사용해야 합니다.

지오메트리 매니저는 윈도우 안에서 위젯의 위치와 크기를 결정하는 역할을 합니다. 그중 그리드(Grid) 지오메트리 매니저는 위젯을 마치 표처럼 행(row)과 열(column) 단위로 배치하는 방식입니다.

만약 위젯을 인접한 셀이나 열까지 확장해서 배치하고 싶다면 widget.rowconfigure() 또는 widget.grid_rowconfigure() 메서드를 사용합니다. 이 메서드들은 weight 값과 함께 행 또는 열의 인덱스를 매개변수로 받습니다.

두 메서드의 차이점

결론부터 말씀드리면, 두 메서드는 완전히 동일하게 동작합니다. grid_rowconfigure()는 하위 호환성을 위해 남겨진 별칭(alias)이며, 최신 Tkinter 버전에서는 rowconfigure()가 표준 이름으로 권장됩니다. 어느 쪽을 사용하더라도 위젯의 행과 열에 weight 속성을 부여해, 창 크기가 변할 때 여분의 공간을 어떻게 분배할지 지정할 수 있습니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *

# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x350")

# 새 프레임 추가
f1 = Frame(win, background="bisque", width=10, height=100)
f2 = Frame(win, background="blue", width=10, height=100)

# sticky 옵션으로 남은 공간을 채우도록 위젯 배치
f1.grid(row=0, column=0, sticky="nsew")
f2.grid(row=0, column=1, sticky="nsew")

# 열과 행에 weight 속성 부여
win.columnconfigure(0, weight=1)
win.rowconfigure(1, weight=0)

win.mainloop()

실행 결과

위 코드를 실행하면 윈도우에 색상이 있는 띠 형태의 프레임들이 나타납니다. 각 열에 weight 속성을 부여하면 창 크기가 변경될 때 해당 열이 더 많은 공간을 차지하도록 확장됩니다.