[Python] 파이썬 GUI (Tkinter)

위젯들은 모두 클래스이기 때문에 원하는 객체를 생성해서 사용하면 된다. 

#tkinter_1.py
from tkinter import *

win = Tk() #윈도우 창을 생성할 수 있도록 도와주는 클래스
win.title('제목없는 윈도우') #윈도우 제목
#geometry("너비*높이+x좌표+y좌표") #좌표는 좌상단기준으로 아래로(y) 오른쪽으로(x)
win.geometry("300x300+100+100")
#Label() 을 이용하여 값을 추가할 수 있다.
label = Label(win,text='파이썬',bg='red',fg='white') #bg: 백그라운드, fg: 폰트
label2 = Label(win,text='box',bg='green',fg='black')
label.pack() #화면 배치 관리자
label2.pack()

#버튼 만들기
btn1= Button(win,text='첫번째 버튼')
btn2= Button(win,text='두번째 버튼')
#place(x,y) : 윈도우 창 내에서 x,y좌표 위치를 잡아서 위젯들을 표시해준다.
#grid(가로(row), 세로(column))
btn1.place(x=0,y=0)
btn2.place(x=100,y=100)
#btn1.pack(side=LEFT)
#btn2.pack(side=LEFT)


#pack() : 윈도우 자체 크기로 압축해서 자동 지정한다. 특별한 지정이 없다면 top에 선언된다.
#pack() 은 side()를 통해 배치할 수 있다. #side(LEFT,RIGHT,TOP)
#resizeable(상하,좌우) 조정 가능성 False로 주면 변경 불가
#win.resizable(False,False)
win.mainloop() #윈도우 창이 종료될 때 까지 윈도우를 실행 시킨다.


#tkinter_2.py
from tkinter import *

win = Tk() #윈도우 창을 생성할 수 있도록 도와주는 클래스

win.geometry("300x300+100+100")
#Entry : 사용자로부터 입력을 받을 때 사용하는 텍스트 창으로 입력한 문자열을 가지고 올 수 있다.
#이벤트

Label(win,text='ID:').grid(row=0)
Label(win,text='PW:').grid(row=1)

e1 = Entry(win)
e2= Entry(win)

e1.grid(row=0,column=1)
e2.grid(row=1,column=1)
win.mainloop() #윈도우 창이 종료될 때 까지 윈도우를 실행 시킨다.


#tkinter_3.py
from tkinter import *

win = Tk() #윈도우 창을 생성할 수 있도록 도와주는 클래스

win.geometry("300x300+100+100")

def press():
    print('Hello')

def my_call():
    #버튼이 눌리면 클릭 : 버튼이 눌렸다.
    #btn1['text']='버튼이 눌렸다.'
    if btn1['text'] =='CLICK':
        btn1['text']='Btn pressed'
    else:
        btn1['text']='CLICK'

btn1 = Button(win,text='CLICK',command=my_call)
btn1.pack()
#이벤트 ==>bind : 위젯들에서 특정한 상황이 발생했을 때 수행할 수 있는 함수들로 연결하는 기능

win.mainloop() #윈도우 창이 종료될 때 까지 윈도우를 실행 시킨다.


#tkinter_4.py
from tkinter import *

win = Tk() #윈도우 창을 생성할 수 있도록 도와주는 클래스

win.geometry("300x300+100+100")

#Canvas 위젯 : 스케치북
#선, 다각형, 원
#Canvas(윈도우 창,parameter1,2,,,)

can=Canvas(win,width=400,height=300,bg='white')
can.pack()


win.mainloop() #윈도우 창이 종료될 때 까지 윈도우를 실행 시킨다.




댓글