Appia의 IT세상

파이썬[Python] 021 GUI모듈 tkinter기본강의 001 button, Canvas 본문

Python/Python Tk (GUI)

파이썬[Python] 021 GUI모듈 tkinter기본강의 001 button, Canvas

Appia 2019. 12. 31. 06:59
반응형

오늘부터 간단하게 파이썬[Python] GUI 작성하는 방법에 대해서 살펴보고자 합니다. 현재 적용하고 있는 버전은 파이썬[Python] 3버전으로 사용합니다. 주로 4개의 모듈이 사용되지만, 저는 기본 제공되는 모듈을 사용하고자 합니다. Tkinter 경우 별다른 모듈 설치 없이도 가능하기 때문에 처음 접근하는 매우 용이할 것이라고 생각합니다.

 

먼저 간단히 다음 코드를 실행해보겠습니다.

import tkinter 
top = tkinter.Tk()
# you insert code here
top.mainloop()

 

위의 코드를 실행하면 다음과 같은 화면, 다음과 같은 위도우가 나타납니다. 위의 코드에서 Tk()를 생성한 부분 다음줄 부터 각자 생각한 부분에 대해서 코드로 입력 해주시면 됩니다. 

 

실제 모든 부분들은 위에 보이는 윈도우에 나타나게 되는게 tkinter 특징입니다. 그래서 저는 버튼부터 간단하게 하나하나씩 다루어 예정입니다. 오늘은 우선,  button Canvas 대해서 살펴보도록 하겠습니다.

 

<Button>

Button 클릭으로 다양한 이벤트들을 연결할 있는 GUI입니다. Button 기반으로 관련해서 동작할 있게 작업을 해줍니다.

w = Button ( master, option = value, ... )

 

다음 코드를 예시로 간단히 살펴보도록 하겠습니다.

 

from tkinter import *
top = Tk()
B = Button(top,width=10 ,height= 10,text = "push")
B.place(x = 10,y = 10)
top.mainloop()

 위의 코드를 간단히 살펴보겠습니다. 

B = Button(top,width = 10, height = 10, text = "push") 

부분을 버튼을 하나 생성하는 부분입니다. 이 부분을 top이라는 위에서 생성한 윈도우에 위치 하게 합니다. 여기에서 place명령어를 사용하여 생성한 tk라는 윈도우 안에서 버튼이 어디에 위치할 것인지에 대해서 명시하게 됩니다. 다음 코드를 실행하면 다음과 같은 화면이 나타납니다. 

실제 보이는 부분들은 버튼에 대해서 명시해주기만 하고 아무런 동작을 하지 않습니다. 보이는 바는 실제 버튼의 크기와 버튼에 명시된 텍스트에 대해서 명시하고 있습니다. 하지만, 이벤트 처리는 되지 않고 있습니다.

 

관련해서 이벤트 처리 및 몇가지 변화를 시도 해보도록 하겠습니다.

from tkinter import *
from tkinter import messagebox

def Callhello():
   msg = messagebox.showinfo( "Hello Appia","Welcome, please click ad")

top = Tk()
B = Button( top,text = "Push", command = Callhello)
B.place(x = 50,y = 50)
top.mainloop()

 

먼저, 버튼에 연결할 이벤트를 만들기 위해서 하나의 함수를 생성합니다. 여기에서 messagebox(향후 포스팅)를 생성하여 글자를 출력하게 할 것입니다. 

 

그리고 위에 코드와 조금 달라진 부분은 다음과 같습니다. 

B = Button(top,text = "push",command = Callhello)

기존에 입력했던 사이즈 부분을 제거 하였고, command 라는 부분이 추가 되었습니다. 아마 센스 있게 알아 보시는 분들이 많을 것입니다. height, width 부분은 값이 입력되지 않는다면 자동으로 글자 사이즈에 맞게 입력을 해줍니다. 그리고 버튼을 눌렀을 때 일어나는 동작들은 command 명령어를 통해서 이루어 집니다. 앞에서 만든 함수를 연결해 주시고 실행해주시면 다음과 같은 화면이 나옵니다. 

부분을 실행해 하시고, 버튼을 클릭하시면 다음과 같은 화면이 나올 것입니다. 물론 위의 보이는 부분과 몇가지 다른 부분이 있습니다. 사이즈를 입력하지 않아도, 자동으로 사이즈를 (텍스트등을 크기를 바탕으로) 설정해 줍니다.

 

<Canvas>

 

Canvas 기본적으로 사진이나 다양한 형태의 그림등을 명시하기 위해서 표시하는 부분입니다. 저의 경우는 이론상으로만 알고 있고 사용하지 않습니다. 여기에는 그림, 텍스트,등을 Canvas 놓을 있습니다.

 

w = Canvas ( master, option = value, ... )

 

다음과 같은 예시로 한번 예시로 작성해 보았습니다.

from tkinter import *

top = Tk()
C = Canvas(top,bg = "red", height = 150, width = 200)
C.pack()
top.mainloop()

 

버튼 부분을 보실 분이라면 쉽게 이해할 수 있을 것입니다. 대부분 다 동일합니다. top에 Canvas를 150x200짜리를 사이즈를 생성합니다. 그리고 pack()명령어를 통해서 윈도우 표시 되게 합니다. (오늘은 pack, place 명령어를 사용해 봤습니다. 다음 시간에 이에 대해서 별도로 포스팅 하겠습니다. ) 다음 코드를 실행해보면 다음과 같은 결과를 얻어 볼 수 있습니다. 

저의 경우 버튼은 많이 사용하지만, Canvas를 많이 사용하지는 않습니다. 그래서 딱히 많은 설명이 ... 

오늘은 간단한 GUI에 대해서 알아보면서, tkinter와 button, Canvas에 대해서 살펴보았습니다. 앞으로 몇 강의 걸쳐서 관련된 부분에 대해서 포스팅 해보도록 하겠습니다. 

반응형
Comments