Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema ao desenhar gráficos com TURTLE

Bom tarde, estou criando um programa para a visualizacao do bubble sorting mas nao consigo "atualizar" a minha tela na hora de desenhar as linhas (cada linha possui um valor entre 0 e 500). Acho que deve ser um problema com o

turtle.tracer(0) e turtle.update()

Gostaria que ele imprimisse na tela primeiro as linhas embaralhadas e depois em ordem, não como neste print. Mesmo adicionando um delay entre as funções, ainda ocorre o erro e as duas imagens são criadas ao mesmo tempo. Segue o meu código ate o momento.

# py Sorting.py
import random
import turtle
import time


# variavei globais
width = 1200
height = 500


def inicio():
    config_turtle()

    # cria a lista de numeros de 1 a num
    num = 500
    numeros = list(range(0, num))
    random.shuffle(numeros)

    desenha(numeros)
    time.sleep(2)
    bubble_sorting(numeros)
    time.sleep(2)
    desenha(numeros)

    turtle.done()


# configuracoes iniciais
def config_turtle():
    turtle.speed(0)
    turtle.bgcolor("black")
    turtle.pencolor("white")
    turtle.pensize(1)
    turtle.hideturtle()
    turtle.tracer(0)
    turtle.title("Bubble Sorting")
    turtle.setup(width, height)


# desenha as linhas
def desenha(numeros):
    turtle.update()
    turtle.up()
    turtle.goto(- width / 2, - height / 2)
    turtle.down()

    # pega cada linha do array
    for x in range(len(numeros)):
        turtle.setheading(90)
        turtle.forward(numeros[x])
        turtle.backward(numeros[x])
        turtle.setheading(0)
        turtle.up()
        turtle.forward(width / len(numeros))
        turtle.down()


def bubble_sorting(numeros):
    sorteado = False
    while(not sorteado):
        sorteado = True
        i = 0
        for i in range(0, len(numeros) - 1):
            if numeros[i] > numeros[i + 1]:
                temp = numeros[i]
                numeros[i] = numeros[i + 1]
                numeros[i + 1] = temp
                sorteado = False


if __name__ == "__main__":
    inicio()

Creio que o erro acontece na função desenha(). Qualquer ajuda é bem vinda. Agradeço desde já.

1 resposta
solução!

Descobri, update() deve ficar no final do meu loop