바인드(이벤트)
버튼 누르거나 키를 누르거나 마우스를 눌렀을 때 실행을 도와주는 핸들러
사용하는 방법
- 위젯.bind()
이벤트발생시 Event Object 객체가 생성된다. 클래스 내에 정보를 가지고 잇다.
event 매개변수가 반드시 필요하다.
#tkinter_7.py
from tkinter import *
from random import *
from time import *
win = Tk()
#마우스를 클릭하면 그 위치를 출력해주는 Event 프로그램
def onClick(event):
print(event.x," ",event.y)
def dleft(event):
print("더블")
def mleft(event):
print("모션")
#bind(위젯,함수명)
win.bind("<Button-1>",onClick)
win.bind("<Double-Button-1>",dleft)
win.bind("<B1-Motion>",mleft)
#"<Button-1>" 마우스 왼쪽 버튼
#"<Button-2>" 마우스 휠
#"<Button-3>" 마우스 오른쪽 버튼
#드래그
#<B1-Motion> : 마우스 왼쪽 버튼 누른 상태로 움직일 때
#B2 : 휠, B3 : 오른쪽
#더블클릭
#<Double-Button-1> 더블클릭 왼쪽
win.mainloop()
#tkinter_8.py
from tkinter import *
from random import *
from time import *
def onClick(event):
print('키보드',event.keycode)
#키보드를 클릭했을 때 <Key>
#char : 키보드를 누른 값을 문자로 반환 ==> enter, f1, ctrl, 방향키 문자로 표현 할 수 없다.
#keycode : 아스키 코드값을 이용해서 반환
win = Tk()
win.bind("<Key>",onClick)
win.focus_set() #키보드가 눌리면 포커스를 수정
win.mainloop()
#tkinter_9.py
from tkinter import *
from random import *
from time import *
def onClick(event):
print('키보드',event.keycode)
win = Tk()
#애니메이션 : 그림의 움직임을 주는 기법
#캔버스 공을 하나 만든다.
#move(객체,x,y) : 이동
#move에서 오른쪽으로 이동시 +, 왼쪽으로 이동시 -, 아래로 이동시 +, 위로 이동시 -
#update() : 기존 그림을 전부 지우고, 새로 그릴 수 있도록 하는 메서드
#sleep() : 시간 지연
#after() : ms 단위로 설정 1초 => 1000
can = Canvas(win,width=400,height=400)
can.pack()
id1 = can.create_oval(10,10,50,50,fill='pink')
for i in range(50):
can.move(id1,5,0) #오른쪽으로 5씩 이동
can.after(100) #0.1초 기다렸다가
can.update() #새로 그림을 그린다.
win.mainloop()
#tkinter_10.py ( 키보드로 공을 움직이고, 색을 무작위 지정하기 )
from tkinter import *
from random import *
from time import *
def onClick(event):
print('키보드',event.keycode)
#공 클래스 생성시 random으로 색 지정
color =['red','blue','yellow','pink','green','orange']
class Ball:
def __init__(self,x,y,can):
self.x=x
self.y=y
self.color = choice(color)
self.can = can
self.ball = self.can.create_oval(x,y,50,50,fill=self.color)
print("ball")
#이동 시의 메서드
def move_left(self,event):
can.move(self.ball, -5, 0)
can.after(10)
can.update()
def move_right(self,event):
can.move(self.ball, +5, 0)
can.after(10)
can.update()
win = Tk()
can = Canvas(win,width=400,height=400)
can.pack()
#키보드를 눌렀을 때 공을 좌우로 움직이기
ball = Ball(10,10,can)
can.bind("<Left>",ball.move_left)
can.bind("<Right>",ball.move_right)
can.focus_set()
win.mainloop()
댓글
댓글 쓰기