Как сделать индикатор / метр в web2py? - PullRequest
0 голосов
/ 15 февраля 2011

Я сделал индикатор прогресса в web2py, но он отображается только в окне терминала. Как я могу заставить индикатор выполнения работать на HTML-странице web2py?

Вот часть кода:

k = 1 # This is the loop variable for subplots.
for counter in nus:
    fig = plt.figure()
    D = E*(h**3)/(12*(1-counter**2)) # Cylindrical rigidity.
    T0 = (L**2)/(D*np.pi**2)*T0_orig # Nondimensional tension.
    amax = T0/kappa # Maximum allowed alpha (to keep tension nonnegative everywhere).
    alphas = [0, (10**-6)*amax, (10**-4)*amax, (10**-2)*amax] # Nondimensional alphas to use for plot.
    workdone = 0.0 # How much of the Figure has been calculated? 0.0 = none, 1.0 = Figure is ready to show.
    workstep = 100.0/len(alphas) # How much work is done during one step in the loop? If there are 4 steps in the loop, then then step will be 100.0/4 = 25.0.
    for alpha in alphas:
        lambda_, xx, f = nonhomog_solver(kappa, alpha, nu, nx)
        V0 = np.sqrt( T0_orig/m + np.pi**2 * D/(m*L**2)*lambda_ )
        if (k == 1):
            V0_ref = V0

        # Figure 1
        fig_a = fig.add_subplot(2,2,k)
        fig.subplots_adjust(hspace=0.4)
        if (k == 1):
            fig_a.set_title(r'$\alpha / \alpha_{max} = %.2g, V_{0}^{ref} = %.6g$ m/s' % (alpha/amax, V0))
        else:
            fig_a.set_title(r'$\alpha / \alpha_{max} = %.2g, V_{0}/V_{0}^{ref} = %.6g$' % (alpha/amax, V0/V0_ref))
        fig_a.plot(xx,f)
        plt.xlim(-kappa,kappa)
        plt.xlabel(r'$\eta$')
        plt.ylim(-0.1,1.1)
        if ((k == 1) or (k == 3)):
            plt.ylabel(r'$f(\eta)$')
        workdone = workdone + workstep
        print "Figure 1:", workdone, "%/100.0% done."

        # Let's get ready for the next subfigure.
        k = k + 1

1 Ответ

2 голосов
/ 15 февраля 2011

Возможно, вам лучше спросить список рассылки .

Ваш код внутри (или вызван) функцией контроллера? Обратите внимание, что операторы print не отправляют какой-либо вывод на веб-страницы (т. Е. Они не влияют на HTTP-ответ) - для этого вашему контроллеру необходимо вернуть dict в представление (или вернуть строку). Для индикатора выполнения вам может понадобиться Ajax (также см. здесь ).

Этот модуль Client Tools содержит пример индикатора выполнения (перейдите к разделу «Еще больше примеров»). Я не использовал его и не уверен, что он подходит для вашего варианта использования, но может дать вам некоторые идеи.

...