-
[python] tkinter/GUI/300x300 프레임 만들기/레이블과 엔트리, 버튼 위젯으로 윈도 생성/위젯의 테이블 형태 배치 방법인 그리드/사용자 로그인 과정에서 이벤트 처리Languages/python 2021. 5. 20. 16:29반응형
tkinter
tci/tk에 대한 파이썬 버전으로 tci/tk를 파이썬에 사용할 수 있도록 한 경량의 그래픽 사용자 인터페이스 모듈
tci은 tool command language 일종의 프로그래밍 언어
파이썬에 기본적으로 내장돼 있는 파이썬 표준 패키지
통합 개발 환경인 파이썬 idle가 바로 tkinter를 바로 이용하여 사용
예제) 300x300 프레임 만들기
from tkinter import * win = Tk() win.geometry('300x300') win.title('배워봐요 Tkinter!') win.mainloop()
실행결과)
레이블과 엔트리, 버튼 위젯으로 윈도 생성
from tkinter import * win = Tk() win.title('여러 위젯 구성') lbl=Label(win,text="레이블(Label)") # 레이블 lbl.pack() # 레이블을 윈도에 맞게 적정하게 배치 txt = Entry(win) txt.insert(0, '엔트리(Entry)') txt.pack() btn = Button(win, text="OK") btn.pack() win.mainloop()
실행결과)
위젯의 테이블 형태 배치 방법인 그리드
from tkinter import * win = Tk() win.title('사용자 인증') lb1=Label(win,text="사용자 이름") lb2=Label(win,text="암호") lb1.grid(row = 0, column = 0, sticky = E) lb2.grid(row = 1, column = 0, sticky = E) et1 = Entry(win) et2 = Entry(win) et1.grid(row = 0,column = 1) et2.grid(row = 1,column = 1) lb = Label(win) lb.grid(row = 2,column = 0, columnspan=2) bt1 = Button(lb, text='OK') bt2 = Button(lb, text='CANCEL') bt1.grid(row=0,column = 0,padx = 10) bt2.grid(row=0,column = 1,padx = 10) win.mainloop()
실행결과)
이벤트 처리 개요
이벤트 처리 : 윈도에서 버튼이나 메뉴 클릭에서 특정한 작업을 수행
이벤트 핸들러
발생한 이벤트를 처리하는 작업, 사용자 정의 함수나 시스템 함수에서 수행
tkinter의 이벤트 처리 방법은 크게 2가지
첫번째 방법
이벤트 진원지인 버튼이나 메뉴의 키워드 인자 command = 함수명으로 이벤트 핸들러를 지정하는 방법
def 방법1_이벤트처리함수(): 구현 btn = tk.Button(win, text='이벤트 처리 버튼') btn['command'] = 방법1_이벤트처리함수명
두번째 방법
위젯 하수 bind(이벤트, 함수명)로 이벤트와 이벤트 핸들러인 함수를 연결하는 방법
정해진 마우스와 키보드의 다양한 이벤트에 대해 처리 가능하다
def 방법1_이벤트처리함수(): 구현 btn = tk.Button(win, text='이벤트 처리 버튼') btn.bind('<Button-1>, 방법2_이벤트처리함수명')
버튼으로 레이블 값을 변경하는 이벤트 처리
함수 add()
레이블 data에 표시되는 StringVar 변수
get()과 set()으로 참조와 수정
함수 sub()
빼기 버튼인 bsub는 함수 sub()와 연결
count = StringVar(value = '0') data = Label(win, width = 20,textvariable = count) def add(): n=int(count.get()) n+=1 count.set(n) def sub(): n = int(count.get()) n-=1 count.set(n) badd = Button(win, text=str[0], command = add) # 누르면 함수 add() 호출 bsub = Button(win, text=str[1], command = sub) # 누르면 함수 sub() 호출
예제) 사용자 로그인 과정에서 이벤트 처리
from tkinter import * users = dict(python='power',java='beauty') def checkid(): uid = et1.get().strip() pwd = et2.get().strip() print(uid,pwd) if uid in users.keys(): if users[uid] == pwd: print('login success') else: print('pwd check') else: print('uid check') win = Tk() win.title('사용자 인증') lb1 = Label(win, text='ID') lb2 = Label(win, text='pasword') lb1.grid(row = 0, column = 0, sticky = E) lb2.grid(row = 1, column = 0, sticky = E) et1 = Entry(win) et2 = Entry(win) et1.grid(row=0, column =1) et2.grid(row=1, column =1) lb = Label(win) lb.grid(row =2,column = 2) bt1 = Button(lb, text='OK', command = checkid) bt2 = Button(lb, text='CANCEL') bt1.grid(row=0, column =0, padx =10) bt2.grid(row=0, column =1, padx =10) win.mainloop()
실행결과)
반응형'Languages > python' 카테고리의 다른 글