Maxima's Lab

[Python, Tkinter] Graphic User Interface (GUI) - Place (위젯 배치) 본문

Python/GUI (Graphic User Interface)

[Python, Tkinter] Graphic User Interface (GUI) - Place (위젯 배치)

Minima 2022. 8. 11. 23:28
728x90
SMALL

안녕하세요, 오늘은 Tkinter 모듈을 사용하여, GUI 중 Place를 활용해서 위젯을 배치하는 방법에 대해서 알아보겠습니다.

 

Place를 활용하기 위해 필요한 항목들은 다음과 같습니다.

 

  • x : width 축 방향으로의 절대 위치 (Ex) 0, 10, 100, 200, ...
  • y : height 축 방향으로의 절대 위치
  • width : 배치될 위젯의 width 축 방향으로의 절대 길이
  • height : 배치될 위젯의 height 축 방향으로의 절대 길이
  • relx : width 축 방향으로의 상대적 위치 (Ex) 0, 0.1, 0.2, ..., 1 (0이상 1이하의 값을 가짐)
  • rely : height 축 방향으로의 상대적 위치
  • relwidth : 배치될 위젯의 width 축 방향으로의 상대 길이 (0이상 1이하의 값을 가짐)
  • relheight : 배치될 위젯의 height 축 방향으로의 상대 길이

 

위의 항목들 중 relx, rely, rewidth, relheight를 활용하여 구현해보겠습니다.

다음은, 전체 코드를 실행 시의 초기 화면입니다.

 

전체 코드 구현 결과(초기 화면)

 

위의 코드를 실행하기 위한 전체 코드는 다음과 같습니다.

 

from tkinter import *

win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(True, True)

button_1 = Button(win, text="Button 1")
button_2 = Button(win, text="Button 2")
button_3 = Button(win, text="Button 3")

button_1.place(relx=0.0, rely=0.2, relwidth=0.5, relheight=0.1)
button_2.place(relx=0.0, rely=0.4, relwidth=1.0, relheight=0.1)
button_3.place(relx=0.5, rely=0.5, relwidth=0.5, relheight=0.5)

win.mainloop()

초기 화면 내 윈도우 창의 위치는 좌표 (x, y) = (200, 200)를 기준으로 width 축 방향으로 800, height 축 방향으로 600의 사이즈로 생성되며, win.resizable(True, True)를 통해 윈도우 창의 사이즈를 조절할 수 있습니다.

 

Button Widgets은 총 3개로 구성되어 있고, 각각의 버튼의 위치와 크기를 (relx, rely) & relwidth x relheight)로 표현하였습니다.

 

button_1.place(relx=0.0, rely=0.2, relwidth=0.5, relheight=0.1)

 

Button 1의 경우에는 초기 윈도우 창 사이즈인 800 x 600 기준, 좌표 (800*0.0, 600*0.2)=(0, 120)에서 생성되며

크기는 (800*0.5) x (600x0.1) = 400 x 60 로 형성됩니다.

 

Button 2와 Button 3도 유사하게 적용되어 각 위젯별 위치와 사이즈로 생성되는 것을 확인하실 수 있습니다.

 

위의 예시와 같이, relx, rely, relwidth, relheight를 이용하여 위젯을 배치하는 경우에는 다음과 같은 이점이 있습니다.

 

초기 화면에서 윈도우 창 사이즈를 증가 시킨 결과

 

상대 위치와 상대 길이를 사용해서 위젯을 배치 하기 때문에 위의 이미지 결과 처럼, 사이즈가 조절이 된 윈도우 창 내에서도 동일한 비율이 유지되는 것을 확인할 수 있습니다.

 

지금까지, Tkinter 모듈을 사용하여, Graphic User Interface (GUI)의 Place를 활용해서 위젯을 배치하는 방법에 대해서 알아보았습니다.

728x90
LIST
Comments