Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/python-auto-align/main.py
5925 views
1
from tkinter import *
2
from tkinter import messagebox
3
4
from PIL import Image, ImageTk
5
6
tk = Tk()
7
app_running = True
8
9
size_canvas_x = 500
10
size_canvas_y = 500
11
s_x = s_y = 8
12
#s_y = 8
13
step_x = size_canvas_x // s_x # шаг по горизонтали
14
step_y = size_canvas_y // s_y # шаг по вертикали
15
size_canvas_x = step_x * s_x
16
size_canvas_y = step_y * s_y
17
18
def on_closing():
19
global app_running
20
if messagebox.askokcancel("Выход из игры", "Хотите выйти из игры?"):
21
app_running = False
22
tk.destroy()
23
24
25
tk.protocol("WM_DELETE_WINDOW", on_closing)
26
tk.title("Игра Шахматы")
27
tk.resizable(0, 0)
28
tk.wm_attributes("-topmost", 1)
29
canvas = Canvas(tk, width=size_canvas_x, height=size_canvas_y, bd=0,
30
highlightthickness=0)
31
32
canvas.pack()
33
tk.update()
34
35
def draw_table():
36
for i in range(0, s_x + 1):
37
canvas.create_line(step_x * i, 0, step_x * i, size_canvas_y)
38
for i in range(0, s_y + 1):
39
canvas.create_line(0, step_y * i, size_canvas_x, step_y * i)
40
41
draw_table()
42
43
canvas1 = Canvas(tk, width=step_x-6, height=step_y-6)
44
canvas1.place(x=2, y=step_y+2, anchor=NW)
45
our_image2_2 = Image.open("chess-ferz.png")
46
our_image2_2 = our_image2_2.resize((step_x-2, step_y-2), Image.ANTIALIAS)
47
our_image2_2 = ImageTk.PhotoImage(our_image2_2)
48
img_id = canvas1.create_image(0, 0, anchor='nw', image = our_image2_2)
49
50
canvas2 = Canvas(tk, width=step_x-6, height=step_y-6)
51
canvas2.place(x=step_x+2, y=step_y+2, anchor=NW)
52
our_image2_3 = Image.open("chess-ladya.png")
53
our_image2_3 = our_image2_3.resize((step_x-2, step_y-2), Image.ANTIALIAS)
54
our_image2_3 = ImageTk.PhotoImage(our_image2_3)
55
img_id = canvas2.create_image(0, 0, anchor='nw', image = our_image2_3)
56
57
58
59
def drag(event):
60
#print(event.x_root, event.y_root)
61
mouse_x = canvas.winfo_pointerx() - canvas.winfo_rootx()
62
mouse_y = canvas.winfo_pointery() - canvas.winfo_rooty()
63
#print(mouse_x, mouse_y)
64
event.widget.place(x=mouse_x, y=mouse_y, anchor=CENTER)
65
66
def release_obj(event):
67
mouse_x = canvas.winfo_pointerx() - canvas.winfo_rootx()
68
mouse_y = canvas.winfo_pointery() - canvas.winfo_rooty()
69
#print(mouse_x, mouse_y)
70
ip_x = mouse_x // step_x
71
ip_y = mouse_y // step_y
72
# x_obj = event.widget.winfo_x()
73
# y_obj = event.widget.winfo_y()
74
# ip_x = x_obj // step_x
75
# ip_y = y_obj // step_y
76
#print(x_obj, y_obj)
77
print(ip_x, ip_y)
78
event.widget.place(x=ip_x*step_x+step_x//2, y=ip_y*step_y+step_y//2)
79
80
canvas1.bind("<B1-Motion>", drag)
81
canvas1.bind("<ButtonRelease-1>", release_obj)
82
canvas2.bind("<B1-Motion>", drag)
83
canvas2.bind("<ButtonRelease-1>", release_obj)
84
85
86
tk.mainloop()
87
88