반응형

파이썬은 간단한 코드로도 Tkinter 로 윈도우 창을 만들 수 있다.

 

import tkinter as tk
window = tk.Tk()

print(type(window)) # 타입 확인

window.mainloop()

tk.Tk() 는 tkinter 모듈의 Tk클래스 생성자를 호출한다.

 

Tkinter 기본창
Tk 클래스

즉 Tk 클래스를 생성하면 GUI 가 초기화되고 실행된다.

 

* Button 생성

Button 은 가장 기본적인 GUI 조작 방식이다. 유저가 버튼을 클릭하면, 이벤트가 발생된다. 어느 GUI 나 다 Button 컴포넌트가 있다. widget 이라고 한다. Button 객체의 생성자를 호출한 후 packer로 배치 시킨다. packer는 Tkinter 의 geometry 관리자로 동서남북으로 배치할 수 있다.

 

PACKER의 옵션 사항 링크 https://docs.python.org/3/library/tkinter.html#the-packer

mport tkinter as tk
window = tk.Tk()

button1 = tk.Button(window, text = 'Button 1', fg = 'red')
button1.pack(side = 'left',expand=1)

button2 = tk.Button(window, text = 'Button 2', fg = 'green')
button2.pack(side = 'right',expand=1)

button3 = tk.Button(window, text = 'Button 2', fg = 'blue')
button3.pack(side = 'top',expand=1)

button4 = tk.Button(window, text = 'Button 2', fg = 'orange')
button4.pack(side = 'bottom',expand=1)

window.mainloop()

버튼 생성시 들어가는 인자는 Tk 클래스 참조변수로 지금 열린 창에 표시된다. 버튼의 text 와 fg(색상)을 설정할 수 있다.  packer 호출시 side로 위치를 잡아주고, expand는 윈도우가 확장될 때 상대적 위치로 잡아준다.

 

Button packer
expeand = 1 시에 확장

* 좀더 추가해보자

import tkinter as tk
window = tk.Tk()

def call1():
    print("Call 1 called")

window.geometry('300x200')

frame = tk.Frame(window)
frame.pack()

button1 = tk.Button(frame, text ="Button 1", command = call1)
button1.pack()

window.mainloop()

 

call1 함수를 정의했다.

 

window.geometry 에서 윈도우창의 크기를 설정한다.

 

그 다음 라인은 프레임을 생성한다. 프레임을 윈도우에 연결한다. 프레임안에 버튼을 담는다. command 에 함수 이름을 넎으면 버튼이 클릭되었을 때 함수를 실행시킨다. 마지막으로 pack으로 frame에 연결한다. pack()을 해야 화면에 나타난다.

심플한 GUI
버튼으로 함수 호출

* 버튼에 스타일을 추가한다

 

import tkinter as tk
window = tk.Tk()
import tkinter.font as tkFont

def call1():
    print("Call 1 called")

window.geometry('200x200')

frame = tk.Frame(window)
frame.pack()

button1 = tk.Button(frame, text ="Button 1", command = call1,
                    fg = 'blue',font ='Hack', bd = 5, bg ="light green",relief = "groove")
button1.pack(pady = 5)

print(list(tkFont.families()))

window.mainloop()

버튼 스타일

 

버튼에 스타일을 추가했다. 상세 옵션이 많으니 튜토리얼을 보고 다양하게 커스터마이즈 해본다.

 

폰트의 이름을 모를 때는 print(list(tkFont.families()))를 사용하면 사용가능한 폰트 리스트를 콘솔에 출력한다.

 

 

버튼 스타일 옵션들 https://coderslegacy.com/python/python-gui/python-tkinter-button/

 

Python Tkinter Button - CodersLegacy

The Python Tkinter Button is a standard Tkinter widget. A button is used as a way for the user to interact with the User interface.

coderslegacy.com

파이썬의 Tkinter는 대형 프로젝트에는 어울리지 않다고 하지만 이 프레임워크를 마스터 하면 다음에 어떤 복잡한 GUI 프레임워크라도 다룰 수 있는 힘을 길러준다. 기본 패키지에 포함되어 있으며 여전히 사용하는 사람수가 가장 많은 GUI 컴포넌트이다.

 

 

다음 포스트에서는  Frame 과 Entry에 관해 알아본다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드