Я использую модуль черепахи python, чтобы позволить пользователю рисовать изображения (относительно низкого разрешения).Я хочу, чтобы пользователь мог нажимать и перетаскивать изображение на экране.Цель состоит в том, чтобы нарисовать изображение в градациях серого 28x28.У меня уже есть необходимый код для рисования изображения (для простоты обработки он хранится в простой матрице).
Я могу рисовать с помощью функции turtle.onscreenclick ().Точно так же я все еще могу рисовать, используя turtle.ondrag (), но это абсурдно запаздывает и пропускает по экрану, если я постоянно перерисовываю свое изображение.
Мое решение состоит в том, чтобы ondrag () сохранял все точки, к которым обращается, в массиве кортежей.Вот где у меня проблемы.План состоит в том, чтобы использовать этот массив, чтобы затем обновлять матрицу-пустышку и обновлять экран только после перетаскивания (или каждый здесь и там для лучшей плавности).
def click(x, y):
tim.goto(0, 0)
updateArray(x,y) ##Updates the numpy array
##Refresh the screen
tim.clear()
drawArr(arr)#Draws the screen with the new array
turtle.update()
dragArr = []
def drag(x, y):
print("Dragging; X:", x, "Y:", y)
dragArr.append((x, y))
def release(x, y):
print(dragArr)
for x, y in dragArr:
print("X:", x, "Y:", y)
updateArray(x,y)
dragArr = []
tim.clear()
drawArr
turtle.update()
drawArr(arr)
tim.goto(200, 0)
tim.color((128, 128, 128))
turtle.update()
tim.shapesize(stretch_wid = 10000, stretch_len = 10000) #Make the turtle larger for the sake of tim.ondrag(),
#as it only works when you actually click on the turtle; eventually the turtle will be invisible
tim.showturtle()
tim.goto(0, 0)
turtle.update()
turtle.onscreenclick(click, 1, True)
turtle.onrelease(release, 1, True)
tim.ondrag(drag, 1, True)
Цель состоит в том, чтобы сделать две вещи;нарисуйте исходное изображение из массива numpy, а затем нарисуйте поверх него.В итоге я получаю, что функция ondrag () вызывает нормально;он печатает все пиксели попадания в консоли.Тем не менее, функция onrelease никогда не вызывается, и в консоли ничего не печатается.
Черепаха явно не требуется, хотя изначально она, казалось, отлично подходила для этой задачи.Изначально я работал с matplotlib, и, честно говоря, было бы лучше, если бы я знал, что я с ним делаю.При этом любое решение, которое работает, является именно этим;решение, которое работает.