При вызове функции с помощью (bind('', oval)) она рисует овал на холсте canvas
с помощью аргумента event но проблема в том что другая функция не перемещает овал!
код который работает неправильно
import tkinter as tk
import sqlite3 as sql
root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack(fill="both", expand=True)
def oval(event):# рисует овал
global x1
global y1
global x2
global y2
global shape
x1 = event.x + 50
y1 = event.y + 50
x2 = event.x - 50
y2 = event.y - 50
#x1 = 0
#y1 = 0
#x2 = 100
#y2 = 100
shape = canvas.create_oval(x1, y1, x2, y2)
def move_oval(event):# перемещает овал
global x1
global y1
global x2
global y2
if (x1 <= event.x ) and (x2 >= event.x) and (y1 <= event.y) and (y2 >=event.y):# проверка находится ли курсор мышки
x1 = event.x - 50 #там где находится овал чтобы переместить его
y1 = event.y - 50
x2 = event.x + 50
y2 = event.y + 50
canvas.coords(shape, x1, y1, x2, y2)
canvas.bind('<Button-3>', oval)
canvas.bind('<B1-Motion>', move_oval)
root.mainloop()
хотя если переменным давать информацию о координатах напрямую то функция move_oval перемещает овал
import tkinter as tk
import sqlite3 as sql
root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack(fill="both", expand=True)
def oval(event):# рисует овал
global x1
global y1
global x2
global y2
global shape
#x1 = event.x + 50
#y1 = event.y + 50
#x2 = event.x - 50
#y2 = event.y - 50
x1 = 0
y1 = 0
x2 = 100
y2 = 100
shape = canvas.create_oval(x1, y1, x2, y2)
def move_oval(event):# перемещает овал
global x1
global y1
global x2
global y2
if (x1 <= event.x ) and (x2 >= event.x) and (y1 <= event.y) and (y2 >=event.y):# проверка находится ли курсор мышки
x1 = event.x - 50 #там где находится овал чтобы переместить его
y1 = event.y - 50
x2 = event.x + 50
y2 = event.y + 50
canvas.coords(shape, x1, y1, x2, y2)
canvas.bind('<Button-3>', oval)
canvas.bind('<B1-Motion>', move_oval)
root.mainloop()
помогите