파이썬으로 GUI 즉, 프로그램 화면을 만드는 방법을 알아보겠습니다. PyQt도 있지만 tkinter가 개인적으로 더 쉽게 느껴졌습니다. 기초적인 과정부터 tkinter와 소켓 통신을 통해 채팅창 만드는 과정까지 나가보겠습니다.
우선 tkinter 모듈을 import 해야합니다. tkinter 모듈은 파이썬 설치 시 기본으로 제공됩니다. 혹시나 없다면 pip install tk로 설치해야 합니다.
목차
1. 화면 만들기
2. 창의 최대/최소 사이즈
3. 줄이기 가능, 불가능
4. 프로그램 화면을 중앙에 배치하기
1. 화면 만들기
코드를 통해서 알아보겠습니다.
from tkinter import *
gui = Tk()
gui.mainloop()
from tkinter import *
-> tkinter 모듈을 임포트 시켜서 사용이 가능하게 해주는 것입니다.
gui = Tk()
-> Tk 객체를 생성하는 것입니다. 즉 프로그램 화면을 만드는 것입니다.
gui.mainloop()
-> 이게 없이 코드를 실행하면 딱 한 번 실행하고 끝나게 됩니다. 이 코드로 인해 프로그램 창이 우측 상단 x를 누르지 않는 이상 화면을 유지시켜 줍니다.
2. 창의 최대/최소 사이즈
from tkinter import *
gui = Tk()
gui.geometry("400x300+300+300")
gui.minsize(200, 150)
gui.maxsize(600, 450)
gui.mainloop()
gui.geometry("400x300+300+300")
-> 가로 400, 세로 300, 화면의 좌측 상단으로부터 300이 떨어진 곳, 화면의 좌측으로부터 300이 떨어진 곳(쉽게 말해서 기본 크기가 400 x 300이고 왼쪽으로부터 가로 300 세로 300이 떨어진 곳에서 화면을 만들어라는 것입니다.)이때 +300+300은 빼고 "400x300"으로 해도 가능합니다. 추가로 -300-300이런 것도 가능합니다. 따라서 +는 좌상단으로부터 떨어진 거리, -는 우하단으로부터 떨어진 거리입니다.
gui.minsize(200, 150)
-> 창을 줄일 때 창의 최소 사이즈 입니다. 가로 200, 세로 150으로 제한합니다.
gui.maxsize(600, 450)
-> 창을 늘릴 때 창의 최대 사이즈 입니다. 가로 600, 세로 450으로 제한합니다.
이 코드를 응용하면 창을 늘리거나 줄일 수 없도록 만들 수도 있습니다.
from tkinter import *
gui = Tk()
gui.minsize(400, 300)
gui.maxsize(400, 300)
gui.mainloop()
이런 식으로도 가능하고
프로그램 화면이 등장하는 위치를 조절하고 싶으면 아래와 같이 geometry 메소드를 사용하면 됩니다.
from tkinter import *
gui = Tk()
gui.geometry("+300+300")
gui.minsize(400, 300)
gui.maxsize(400, 300)
gui.mainloop()
3. 줄이기 가능, 불가능
minsize, maxsize를 사용한다면 창을 줄이거나 늘리거나 제한을 둘 수 있지만 아래와 같은 방법도 있습니다.
from tkinter import *
gui = Tk()
gui.geometry("400x300")
gui.resizable(True, False)
gui.mainloop()
gui.resizable(True, False)
-> 이 코드는 가로를 늘릴 수 있는지, 세로를 늘릴 수 있는지 bool 값을 통해서 제한을 둘 수 있습니다.
4. 프로그램 화면을 중앙에 위치하기
모니터의 크기를 자동으로 구하고 이에 맞추어 값을 적절히 하면 가운데로 배치할 수 있습니다.
이때 모니터의 크기는 자신의 모니터 해상도를 말합니다.
from tkinter import *
gui = Tk()
width = gui.winfo_screenwidth() # 모니터 해상도 가로 크기
height = gui.winfo_screenheight() # 모니터 해상도 세로 크기
gui.geometry(f"400x300+{int((width-400)/2)}+{int((height-300)/2)}")
gui.resizable(False, False)
gui.mainloop()
gui.geometry(f"400x300+{int((width-400)/2)}+{int((height-300)/2)}")
-> f-string 방식을 이용하여 깔끔히 나타낼 수 있습니다. 공식은 (모니터 가로 해상도 - 프로그램의 가로크기)/2, (모니터 세로 해상도 - 프로그램의 세로크기)/2 입니다.
내용이 잘 전달되었으면 좋겠습니다. 다음에는 글자를 나타낼 수 있는 Label에 대해서 알아보겠습니다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
[파이썬 GUI] tkinter 4(버튼 사용하기/버튼의 기능 만들기) (3) | 2022.10.21 |
---|---|
[파이썬 GUI] tkinter 3(위젯을 화면에 배치하는 방법, pack, grid, place) (0) | 2022.10.14 |
[파이썬 GUI] tkinter 2(Label을 이용하여 글자, 이미지 표현하기) (0) | 2022.10.14 |
호기심 파이썬 : 코딩을 공부할 때 알아두면 좋은 것들(1) (0) | 2022.07.02 |
파이썬 : 올림/내림/반올림(ceil/floor/round) (0) | 2022.07.01 |
댓글