У вас есть базовое недопонимание событий мыши в графике черепахи. Они прибывают как независимые события, и вы не можете просто остановить свой работающий код, чтобы дождаться его появления. Ваш код должен быть разработан для реагирования на события.
Я полагаю, что более простой пакет Zelle Graphics может лучше соответствовать вашим потребностям. Это getMouse()
рутина остановит вашу программу и подождет, пока пользователь щелкнет мышью.
Ниже я реализовал грубую визуализацию вашего (завершенного) кода, которая выводит перетасованный массив на консоль. В графическом окне, начиная снизу, значение по индексу сводки отображается красным цветом в центре, а остальные значения массива отображаются с обеих сторон. Когда вы щелкаете в окне, программа продвигается и графическое окно обновляется, пока отсортированный массив не будет напечатан в окне консоли. Еще один клик выходит из программы:
from random import shuffle
from graphics import *
def swap(array, i, j):
array[i], array[j] = array[j], array[i]
def partition(array, start, end):
global text
pivotIndex = start
pivotValue = array[end]
for i in range(start, len(array) - 1):
if array[i] < pivotValue:
##########################################
# crude visualization example
text = [obj.clone() for obj in text]
left, pivot, right = text
left.setText(str(array[:pivotIndex]))
pivot.setText(str(array[pivotIndex]))
right.setText(str(array[pivotIndex + 1:]))
for obj in text:
obj.draw(window).move(0, -10)
window.getMouse() #
##########################################
swap(array, i, pivotIndex)
pivotIndex += 1
swap(array, pivotIndex, end)
return pivotIndex
def quickSort(array, low, high):
if low < high:
pivotIndex = partition(array, low, high)
quickSort(array, low, pivotIndex - 1)
quickSort(array, pivotIndex + 1, high)
########################################################################################
# crude visualization setup
window = GraphWin("Sorting Visualization", 800, 600)
text = [Text(Point(200, 600), ""), Text(Point(400, 600), ""), Text(Point(600, 600), "")]
text[1].setTextColor('red') #
########################################################################################
array = list(range(20))
shuffle(array)
print(array)
quickSort(array, 0, len(array) - 1)
print(array)
window.getMouse()
window.close()