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

Tkinter 고정 프레임에서 위젯을 중앙에 배치하는 방법

Tkinter는 위젯의 속성을 구성하는 데 활용할 수 있는 다양한 내장 함수와 메서드를 제공합니다. 이러한 속성은 사용하는 지오메트리 관리자(geometry manager)에 따라 달라지는데, 그중 그리드(Grid) 지오메트리 관리자는 애플리케이션에서 발생하는 복잡한 레이아웃 문제를 효과적으로 해결할 수 있는 강력한 도구입니다. 그리드 지오메트리 관리자는 주어진 공간 안에 위젯들을 서로 겹치지 않도록 배치해 줍니다.

그리드 지오메트리 관리자로 생성한 고정(sticky) 프레임 안에 레이블(Label) 텍스트 위젯을 중앙에 배치하고 싶다고 가정해 보겠습니다. 이를 위해서는 먼저 행(row)과 열(column) 속성을 구성하여 메인 윈도우를 고정 상태로 만들어야 합니다. 메인 윈도우가 프레임과 함께 sticky 상태가 되면 어떤 위젯이든 창 크기 변화에 맞춰 합리적으로 재조정될 수 있습니다. 이때 레이블 위젯 역시 sticky 속성을 가져야 합니다. 마지막으로 위젯을 중앙에 배치하려면 row, column, weight 값을 지정하면 됩니다.

예제 코드

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

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

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

# 윈도우 크기를 지정하기 위한 프레임 추가
frame= Frame(win, relief= 'sunken')
frame.grid(sticky= "we")

# 모든 경우에 대해 프레임을 sticky 상태로 유지
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)

# 모든 경우에 대해 윈도우를 sticky 상태로 유지
win.grid_rowconfigure(0, weight=1)
win.grid_columnconfigure(0, weight=1)

# 레이블 위젯 추가
label= Label(frame, text= "Hey Folks! Welcome to Tutorialspoint",
font=('Helvetica 15 bold'), bg= "white")
label.grid(row=3,column=0)
label.grid_rowconfigure(1, weight=1)
label.grid_columnconfigure(1, weight=1)

win.mainloop()

실행 결과

위 코드를 실행하면 고정된 프레임 안에 중앙 정렬된 레이블 텍스트가 화면에 표시됩니다.

Tkinter 고정 프레임에서 위젯을 중앙에 배치하는 방법