Tkinter는 GUI 기반 애플리케이션을 만들 때 널리 사용되는 파이썬 표준 라이브러리입니다. 다양한 툴킷과 함수·모듈을 제공하여 애플리케이션의 여러 속성을 정의할 수 있으며, 버튼(Button), 텍스트 상자(Text), 라벨(Label)과 같은 위젯을 활용해 GUI를 구성할 수 있습니다. 또한 별도의 함수와 라이브러리를 사용하면 위젯의 위치나 좌표를 자유롭게 커스터마이징할 수 있습니다.
winfo_rootx(), winfo_rooty() 메서드
예를 들어 Tkinter 프레임 안에 특정 위치에 배치된 텍스트 라벨 위젯이 있다고 가정해 보겠습니다. 이때 해당 위젯의 실제 좌표를 확인하려면 Tkinter 라이브러리에서 제공하는 geometry(지오메트리) 관련 메서드를 사용하면 됩니다.
핵심은 winfo_rootx()와 winfo_rooty() 함수입니다. 이 두 함수는 프레임 또는 윈도우를 기준으로 위젯의 실제 X, Y 좌표를 반환합니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
win = Tk()
# 프레임 크기 설정
win.geometry("600x400")
# 텍스트 위젯 정의
my_text = Text(win, height=5, width=52)
# 라벨 생성
lab = Label(win, text="TutorialsPoint.com")
# 폰트 등 추가 속성 설정
lab.config(font=("Helvetica", 20))
# 버튼 위젯 생성
my_button = Button(text="Hello")
# 버튼 위젯의 위치 지정
my_button.place(x=100, y=100)
# tkinter 프레임 기준으로 좌표 갱신
win.update()
# 버튼 위젯과 텍스트 위젯의 좌표 가져오기
widget_x1, widget_y1 = my_button.winfo_rootx(), my_button.winfo_rooty()
widget_x2, widget_y2 = my_text.winfo_rootx(), my_text.winfo_rooty()
lab.pack()
print(widget_x1, widget_y1)
print(widget_x2, widget_y2)
# 윈도우 유지
win.mainloop()실행 결과
위 코드를 실행하면 위젯의 현재 위치가 아래와 같이 출력됩니다.
134 157 0 157
출력 결과에서 첫 번째 줄은 버튼 위젯의 X, Y 좌표를, 두 번째 줄은 텍스트 위젯의 좌표를 나타냅니다. 주목할 점은 win.update()를 호출해야 정확한 좌표를 얻을 수 있다는 것입니다. update()가 실행되기 전에는 위젯이 실제로 화면에 배치되지 않아 잘못된 값이 반환될 수 있기 때문입니다.