250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- OpenCV
- tensorflow
- kubernetes
- GUI
- 장고
- Tkinter
- Computer Vision
- 텐서플로우
- Python
- paper review
- Web Programming
- 웹 프로그래밍
- Deep Learning
- MariaDB
- 파이썬
- 논문 리뷰
- k8s
- vue.js
- Docker
- pytorch
- 데이터베이스
- yaml
- Django
- 파이토치
- POD
- 그래픽 유저 인터페이스
- numpy
- 딥러닝
- FLASK
- 컴퓨터 비전
Archives
- Today
- Total
Maxima's Lab
[Python, Tkinter] Graphic User Interface (GUI) - Frame(프레임) 생성 본문
Python/GUI (Graphic User Interface)
[Python, Tkinter] Graphic User Interface (GUI) - Frame(프레임) 생성
Minima 2022. 7. 16. 20:11728x90
SMALL
안녕하세요, 오늘은 Tkinter 모듈을 사용하여, GUI 중 Frame(프레임)을 생성하는 방법에 대해서 알아보겠습니다.
다음과 같은 과정을 통해 1개의 윈도우 창 내에 3개의 프레임을 생성해보겠습니다.
- Window(윈도우) 창을 생성합니다.
- Frame() 함수를 통해 Frame 3개를 생성합니다.
- 각 Frame 별 3개의 Label를 적용하여 구별합니다.
- 최종적으로 3개의 Frame들을 Window(윈도우) 창에 pack 할 때, 각 Frame 별 적당한 간격을 생성합니다
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
frame_1 = Frame(win, relief="solid", bd=10)
frame_2 = Frame(win, relief="solid", bd=10)
frame_3 = Frame(win, relief="solid", bd=10)
label_1 = Label(frame_1, text='Frame-1')
label_2 = Label(frame_2, text='Frame-2')
label_3 = Label(frame_3, text='Frame-3')
label_1.pack(); label_2.pack(); label_3.pack()
frame_1.pack(side="left", fill="both", expand=True, padx=5, pady=5)
frame_2.pack(side="left", fill="both", expand=True, padx=5, pady=5)
frame_3.pack(side="left", fill="both", expand=True, padx=5, pady=5)
win.mainloop()
위의 코드에서 pack() 적용 시 side="left" 옵션을 통해 좌측 부터 Frame을 생성하며, padx=5, pady=5 옵션을 통해 서로 다른 Frame들 간에 x축 방향으로 5 만큼, y축 방향으로 5만큼 간격을 설정합니다. 추가적으로, fill="both", expand=True 옵션을 통해 각 Frame별 padx와 pady를 통해 확보한 영역에 대해 Frame의 크기를 채우고 확장시킵니다.
다음은 frame_1에 대해 fill, expand 옵션을 변화함에 적용되는 결과에 대해 알아보겠습니다.
- fill = "both", expand = False
: "both"의 의미는 x축과 y축 방향으로 Frame을 모두 채운다는 의미입니다. fill = "x", fill = "y"를 통해 각 축을 기준으로 독립적으로 설정할 수도 있습니다. 추가적으로, expand = True는 사용하지 않는 공간들이 없게 하는 옵션입니다.
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
frame_1 = Frame(win, relief="solid", bd=10)
frame_2 = Frame(win, relief="solid", bd=10)
frame_3 = Frame(win, relief="solid", bd=10)
label_1 = Label(frame_1, text='Frame-1')
label_2 = Label(frame_2, text='Frame-2')
label_3 = Label(frame_3, text='Frame-3')
label_1.pack(); label_2.pack(); label_3.pack()
frame_1.pack(side="left", fill="both", expand=False, padx=5, pady=5)
frame_2.pack(side="left", fill="both", expand=True, padx=5, pady=5)
frame_3.pack(side="left", fill="both", expand=True, padx=5, pady=5)
win.mainloop()
- fill = "x", expand = True
: "x"의 의미는 x축 방향으로 Frame을 모두 채운다는 의미입니다.
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
frame_1 = Frame(win, relief="solid", bd=10)
frame_2 = Frame(win, relief="solid", bd=10)
frame_3 = Frame(win, relief="solid", bd=10)
label_1 = Label(frame_1, text='Frame-1')
label_2 = Label(frame_2, text='Frame-2')
label_3 = Label(frame_3, text='Frame-3')
label_1.pack(); label_2.pack(); label_3.pack()
frame_1.pack(side="left", fill="x", expand=True, padx=5, pady=5)
frame_2.pack(side="left", fill="both", expand=True, padx=5, pady=5)
frame_3.pack(side="left", fill="both", expand=True, padx=5, pady=5)
win.mainloop()
- fill = "both", expand = False (Frame 1개)
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
frame_1 = Frame(win, relief="solid", bd=10)
label_1 = Label(frame_1, text='Frame-1')
label_1.pack();
frame_1.pack(side="left", fill="both", expand=False, padx=5, pady=5)
win.mainloop()
위의 코드와 같이 expand = False 옵션을 사용하게 되면, 다음과 같이 사용하지 않는 공간들이 발생하게 됩니다.
하지만, expand = True 옵션을 사용하게 되면, 사용할 수 있는 모든 공간들을 전부 사용하게 됩니다. padx = 5, pady = 5에 대한 공간을 제외하고 나머지 가용 공간들을 모두 사용하는 것을 확인할 수 있습니다.
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
frame_1 = Frame(win, relief="solid", bd=10)
label_1 = Label(frame_1, text='Frame-1')
label_1.pack();
frame_1.pack(side="left", fill="both", expand=True, padx=5, pady=5)
win.mainloop()
위의 예제 들은 side = "left" 방향을 기준으로 pack을 적용하였으며, "right", "top", "bottom"을 다앙하게 적용하면서 가용 공간들을 다양하게 사용할 수 있습니다.
지금까지, Tkinter 모듈을 사용하여, Graphic User Interface (GUI)의 Frame(프레임)을 생성하는 방법에 대해서 알아보았습니다.
728x90
LIST
'Python > GUI (Graphic User Interface)' 카테고리의 다른 글
Comments