본문 바로가기

IT/Python

[Python GUI Programming :: Tkinter] Hello, Tkinter

이제 코드를 보도록 하겠습니다.

모든 튜토리얼이 그렇듯, Hello World부터 시작하겠습니다.


- First Tkinter Program :: Hello1.py


from Tkinter import *


root = Tk()

w = Label(root, text="Hello, world!")
w.pack()

root.mainloop()


- 실행 결과




- 코드 설명


먼저 tkinter를 import하는 것으로 먼저 시작합니다.

tkinter는 모든 클래스와 함수와 다른 기타 필요한 것들을 모두 포함하고 있습니다.

대부분의 경우 여러분들은 간단하게 tkinter를 import해서 네임스패이스로 필요한 것을 사용할 수 있습니다.


- from ~ import tkinter

#
from tkinter import *
#


tkinter를 초기화하기 위해서 우리는 Tk root 위젯을 만들어야합니다.

이러한 윈도우는 윈도우 관리자가 제공하는 제목 표시 및 기타 장식으로 된 일반적인 윈도우입니다.

여러분들은 각 프로그램에 하나의 root 위젯만 만들야하며, 다른 위젯보다 먼저 만들어져야합니다.


- create root widget

#
root = Tk()
#


다음으로 우리는 label 위젯을 root window의 child로 만들어줍니다.


- create Label widget as a child to the root window

#
w = Label(root, text="Hello, world!")
w.pack()
#


Label 위젯은 text나 icon이나 image를 디스플레이할 수 있습니다.

이번 예제에서는 text를 디스플레이하기 위해서 text 옵션을 특별하게 주었습니다.


다음으로 우리는 Label 위젯에서 pack 메소드를 호출해야합니다.

pack 메소드는 주어진 text에 맞는 크기를 알아서 찾으며, Label 위젯이 보여주게끔 만듭니다.

하지만 윈도우는 tkinter의 event loop에 들어가기전에는 보여지지 않습니다.


- call event loop

#
root.mainloop()
#


우리가 윈도우 창을 닫을때까지 프로그램은 event loop에 머무를 겁니다.

event loop는 마우스 클릭이나 키보드 입력같은 사용자들의 event나 redraw나 window configuration 메세지같은 윈도우 시스템만

핸들링할 뿐만 아니라, tkinter에 대기중인 작업도 수행합니다.

tkinter에 대기중인 작업들의 예에는 geometry management(pack 메소드에 의해서 대기중인 작업들)이나 

디스플레이 업데이트가 있습니다.

위의 이야기들은 여러분들이 main loop에 진입하기전에는 어플리케이션의 윈도우는 나타나지 않는다는 것을 의미합니다.


[Reference]

[1]. An Introduction to Tkinter(Work in Progress)