프레임의 중앙에 위젯을 배치하려면 place 메서드를 사용할 수 있습니다. 또한 winfo_x()와 winfo_y() 함수를 활용하면 Toplevel 창의 현재 화면 좌표도 손쉽게 확인할 수 있습니다. 예제를 통해 자세히 살펴보겠습니다.
구현 단계
필요한 라이브러리를 임포트하고 tkinter 프레임의 인스턴스를 생성합니다.
win.geometry 메서드를 사용하여 프레임의 크기를 설정합니다.
Toplevel 창을 생성하고 제목과 크기, 항상 맨 위에 표시되는 속성(-topmost)을 지정합니다.
버튼을 생성하고 클릭 시 Toplevel 창의 좌표를 출력하는 콜백 함수를 연결합니다.
place 메서드에 상대 좌표 값(relx=0.5, rely=0.5)을 전달하여 위젯의 중심을 부모 컨테이너 기준 50% 위치에 배치하고, "anchor=CENTER" 옵션으로 앵커를 중앙으로 설정합니다.
마지막으로 애플리케이션 창의 mainloop를 실행합니다.
예제 코드
# Tkinter 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 정의
win.geometry("750x350")
win.title("Main Window")
def toplevel_position():
print("Toplevel 창의 좌표는 다음과 같습니다:", top.winfo_x(), top.winfo_y())
top = Toplevel(win, height=150, width=300)
top.title("This is the Toplevel Window")
top.attributes('-topmost', 'true')
button = ttk.Button(top, text="Get position", command=toplevel_position)
button.place(relx=0.5, rely=0.5, anchor=CENTER)
top.mainloop()
실행 결과
위 코드를 실행하면 다음과 같은 출력 창이 나타납니다.

이제 "Get position" 버튼을 클릭하면 콘솔에 Toplevel 창의 현재 좌표가 출력됩니다.
Toplevel 창의 좌표는 다음과 같습니다: 282 105
여기서 winfo_x()는 창의 왼쪽 상단 모서리의 x 좌표를, winfo_y()는 y 좌표를 반환합니다. 이 방법을 응용하면 창의 위치를 실시간으로 추적하거나, 특정 조건에 따라 창을 원하는 위치로 이동시키는 기능도 구현할 수 있습니다.