반응형
Notice
Recent Posts
«   2024/11   »
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
Today
Total
관리 메뉴

H-Log

[Python] Tkinter 시작하기 본문

dev-log/python

[Python] Tkinter 시작하기

hong6v6 2023. 2. 18. 17:31
반응형

출처 : http://pythonstudy.xyz/

 

소개

Tkinter는 파이썬에 사용할 수 있도록 한 Lightweight GUI 모듈이다.

Tkinter는 타 GUI 프레임워크나 툴킷에 비해 지원되는 위젯들이 부족하고 UI도 그렇게 예쁘지 않다는 단점이 있지만, Python 설치시 기본적으로 내장되어 있는 파이썬 표준 라이브러리이기 때문에 쉽고 간단한 GUI 프로그램을 만들 때 활용될 수 있다.

 

기본 문장

Python 설치시 기본적으로 내장되어있기 때문에 따로 설치가 필요 없다

from tkinter import *   # tkinter 불러오기
root = Tk()             # TK라는 클래스 객체를 root에 저장
root.mainloop()         # 객체의 mainloop() 메서드를 호출한다.
  • mainloop() : 메시지 루프로서 키보드나 마우스 혹은 화면 Redraw와 같은 다양한 이벤트로부터 오는 메시지를 받고 전달하는 일을 한다.

 

간단한 다이얼로그

그럼 Tkinter를 이용하여 간단한 다이얼로그를 만들어 보는데, 이 다이얼로그에는 하나의 라벨, 하나의 텍스트박스, 하나의 버튼이 있다고 가정하자.

이러한 위젯들은 보통 root 객체 생성(root = Tk())과 root.mainloop() 사이에 생성하게 된다.

아래 예제는 "이름" 이라는 라벨(Label 위젯)과 중간에 텍스트박스(Entry 위젯) 하나, 그리고 맨 밑에 OK 버튼(Button 위젯)을 가지도록 한 코드이다 (여기서 pack에 대해서 아래 설명).

from tkinter import *
root = Tk()
 

lbl = Label(root, text="이름")
lbl.pack()
 
txt = Entry(root)
txt.pack()
 
btn = Button(root, text="OK")
btn.pack()
 

root.mainloop()

 

Geometry Manager

Tkinter에서 위젯들을 화면에 배치하는 방식에는 다음과 같은 3가지 방식이 있다.

  • Place (혹은 absolute)  위젯을 위치를 절대 좌표로 정하는 것으로, 윈도우 크기 변경에 따라 위젯들이 변경되지 않으므로 많이 사용되지 않는다. 이 방식은 위젯.place() 메서드를 사용한다.
  • Pack  위젯들을 부모 위젯에 모두 패킹하여 불필요한 공간을 없앤다. 위젯.pack() 메서드를 사용한다.
  • Grid  위젯들을 테이블 레이아웃에 배치하는 것으로 지정된 row, column에 위젯을 놓는다. 위젯.grid() 메서드를 사용한다.

위의 예제에서는 pack 방식을 사용하여 위젯들이 상하(디폴트)로 패킹되었음을 보았다.

아래 예제는 grid 방식으로 위젯을 배치하는 예이다. grid() 메소드에서 row와 column을 정해 주면, 해당 위치에 위젯이 놓이게 된다.

from tkinter import *
root = Tk()
 
lbl = Label(root, text="이름")
lbl.grid(row=0, column=0)

txt = Entry(root)
txt.grid(row=0, column=1)

btn = Button(root, text="OK", width=15)
btn.grid(row=1, column=1)
 
root.mainloop()

반응형

'dev-log > python' 카테고리의 다른 글

[Python] Tkinter 이벤트  (0) 2023.02.18
[Python] Tkinter 위젯 종류  (0) 2023.02.18
[python] Django Static file 연결  (0) 2023.01.30
[python] Django Generic View 사용하기  (0) 2023.01.30
[python] Django Form 생성  (0) 2023.01.30
Comments