파이썬 (pythoon)

[python] tkinter / xy 마우스 / canvas / PhotoImage / mouse / event

working for you 2021. 7. 15. 12:12
반응형

[키보드 화살표 제어 - root]

root.bind("<Left>", left)
root.bind("<Right>", right)
root.bind("<Up>", up)
root.bind("<Down>", down)

 

[마우스 클릭/움직임 제어 - canvas 내에서]

my_canvas.bind('<Motion>', move) # <Motion> 마우스가 움직일때 이벤트지속

my_canvas.bind('<B1-Motion>', move) # 마우스가 클릭한상태로 움직일때 이벤트지속

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from tkinter import *
 
root = Tk()
root.title('2toy')
root.geometry('800x600')
 
= 600
= 400
= w/2
= h/2
 
my_canvas = Canvas(root, width=w, height=h, bg='white'#캔버스
my_canvas.pack(pady=20)
 
img = PhotoImage(file='001.png'#이미지 불러오기
my_image = my_canvas.create_image(0,125, anchor=NW, image=img) #x,y 위치 /
 
def left(event):
    x = -10
    y = 0
    my_canvas.move(my_image, x, y)
def right(event):
    x = 10
    y = 0
    my_canvas.move(my_image, x, y)
def up(event):
    x = 0
    y = -10
    my_canvas.move(my_image, x, y)
def down(event):
    x = 0
    y = 10
    my_canvas.move(my_image, x, y)
 
def move(e):
    global img
    img = PhotoImage(file='001.png')  # 이미지 불러오기
    my_image = my_canvas.create_image(e.x, e.y,  image=img)  # x,y 위치 /
    my_label.config(text='위치는 : x| ' + str(e.x) + ' y|' + str(e.y))
 
 
root.bind("<Left>", left)
root.bind("<Right>", right)
root.bind("<Up>", up)
root.bind("<Down>", down)
 
my_label = Label(root, text="")
my_label.pack(pady=20)
 
my_canvas.bind('<B1-Motion>', move)
 
 
 
root.mainloop()
cs

반응형