我正在用Turtle
在Python3
中编写一个简单的应用程序。它可视化了quicksort
算法。我想改进我的应用程序,这样我就可以通过等待用户的点击来显示算法的每一步。你知道吗
我在算法中间尝试过简单的input()
,但这要求控制台在应用程序窗口进入后台时处于活动状态。
现在我尝试使用onscreenclick()
,但当算法到达某个点时,它会停止侦听鼠标事件。你知道吗
我该怎么做?还有别的办法吗?你知道吗
def partition(array, start, end):
global clickedFlag
pivotIndex = start
pivotValue = array[end]
for i in range(start, len(array) - 1):
if array[i] < pivotValue:
if clickedFlag:
swap(array, i, pivotIndex)
pivotIndex += 1
clickedFlag = False
else:
while clickedFlag == False:
onscreenclick(clicked)
listen()
swap(array, pivotIndex, end)
return pivotIndex
def clicked(x,y):
global clickedFlag
clickedFlag = True
return clickedFlag
我建议您将“等待单击”逻辑集中在一个地方,而不要将其与其他排序逻辑混合。你知道吗
例如
您对海龟图形中的鼠标事件有一个基本的误解。它们以独立事件的形式出现,您不能简单地停止正在运行的代码等待事件的发生。您的代码必须设计为响应事件。你知道吗
我相信更简单的Zelle Graphics包可能更适合您的需要。它的
getMouse()
例程将停止您的程序并等待用户单击鼠标。你知道吗下面我实现了一个粗略的可视化代码(已完成),它将无序数组打印到控制台。在图形窗口中,从底部开始,轴索引处的值以红色显示在中间,其余的数组值显示在两侧。在窗口中单击时,程序将前进,图形窗口将更新,直到排序的数组在控制台窗口中打印出来。再次单击将退出程序:
相关问题 更多 >
编程相关推荐