AlfredoSC 17-12-2021, 18:55
Hola a todos:

Aunque Glade ya es viejo, yo lo acabo de conocer. Comprendiendo que programar en Python el IDE de cada proyecto usando Tkinter, resulta en muchas líneas de código y que el posicionamiento de los controles y ventanas con "place", "grid" o pack requiere estar posicionando cada control en coordenadas que ameritan llevar en la mente una imagen de lo que se quiere lograr, pues Glade lo resuleve en buena medida.

La versión original de Glade (para W$ y Linux) incluye las imágenes de controles que uno quiera seleccionar. Pero la versión mas reciente de Glade (minimalista), usa sólo los nombres de todos los controles, para seleccionarlos y luego "pegarlos" en la ventana principal que constituye el IDE de nuestro proyecto.

Al final, Glade guardará nuestro archivo como *.glade, el cual no es sino un archivo XML, el cual podrá ser invocado por nuestro programa en Python, como por ejemplo:

Código:
gladeFile = "glade/vent2.glade"
        self.builder = gtk.Builder()
        self.builder.add_from_file(gladeFile)
        self.builder.connect_signals(self)

y luego ir llamando los controles del archivo vent2.glade de la siguiente forma:

       
Código:
cmdBorrar = self.builder.get_object("cmdBorrar")
        cmdBorrar.connect("clicked", self.Borrar)

Las librerías Gtk+ y GI  (de GNOME) ya están por default en muchas de las distros Linux
por lo que realmente no se necesita instalar mucho o nada. Pero en W$ es otra cosa. Es casi imposible instalar esas librerías, por lo que actualmente mis diseños en W$ arrojan el mensaje:

"Error: not found gi module"

Parece que no hay "equipo" de entusiastas trabajando para este caso en W$.

Pues lo dejo, por si resulta de interés para alguien....
Shell 17-12-2021, 17:41
Buenas!.

Después de actualizar las fuentes de Gambas, fui a probar el test de velocidad que en su día publicó Benoit en la web.
Lo podéis encontrar en las opciones de "About"

Por mi parte es que tenía y tengo curiosidad por JIT, como usarlo con Gambas, ejemplos.
Y decidí probar el benchmark que se incluye en las fuentes de Gambas desarrollo. Podéis ejecutarlo en vuestro
ordenador.

Lo extraño fue que en este ordenador tengo instalado Python3 y la Python2, pero me mostraba unos datos muy raros
con Python, todo lo contrario, era super rápido.Y no me convencía esos resultado. 0.2s, 0.3s...pasaba algo.

Lo que no sé es como con Python2 funciona ciertos códigos del test donde la indentación no es "propia" de un código Python.
Como es el caso de mandelbrot.py. Tanto las funciones, como las condicionales, los dos puntos no están bien situados y
el código no está bien indentado.

Entonces lo que hice fue modificar los códigos y logré que funcionase con Python3.

Aclaro:

El código fuente no ha sido renovado en "seis años!". Confused
Python2 está obsoleto. Y cambiar el código no cuesta tanto. Al menos, adecentarlo, pasar el plumero.

Si se pretende demostrar que Gambas es más rápido que Python (usando JIT o sin este), hay que demostrarlo
y que mejor que actualizando el código de Python. Mostrando un código mas limpio. Para que se pueda ejecutar.

Benoit parecía más interesado en ver "cuanto" tardaba la ejecución del programa que en el propio código. Confused

Ejemplo con mandelbrot.py

La fuentes que bajamos de la versión de desarrollo:

Fijaros en los ":" en las condicionales, en los for, en la función y el "else" de la línea 39.

Código:
#!/usr/bin/python

import sys

MAXITER = 50
LIMIT = 4
out = sys.stdout;

def mandelbrot(w, h) :

  xmin = -1.5
  ymin = -1
  invN = 2.0 / w

  checknext = True

  for y in range(h) :
    Ci = y * invN + ymin

    for x in range(w) :
      Zr = 0.0
      Zi = 0.0
      Tr = 0.0
      Ti = 0.0
      Cr = x * invN + xmin
      if (checknext) :
    for k in range(MAXITER) :
      Zi = 2 * Zr * Zi + Ci
      Zr = Tr - Ti + Cr
      Ti = Zi * Zi
      Tr = Zr * Zr
      if (Tr + Ti) > LIMIT :
        break
    if k == MAXITER :
      out.write("1")
    else :
      out.write("0")
      checknext = False
      else :
    for k in range(MAXITER) :
      Zi = 2 * Zr * Zi + Ci
      Zr = Tr - Ti + Cr
      Ti = Zi * Zi
      Tr = Zr * Zr
    if (Tr + Ti) < LIMIT :
      out.write("1")
    else :
      out.write("0")
      checknext = True

    out.write("\n")

for i in range(20) :
  mandelbrot(200, 200)

Aquí el mismo pero lo he modificado:

Código:
#!/usr/bin/env python3

import sys

MAXITER = 50
LIMIT = 4
out = sys.stdout


def mandelbrot(w, h):

    xmin = -1.5
    ymin = -1
    invN = 2.0 / w

    checknext = True

    for y in range(h):
        Ci = y * invN + ymin

        for x in range(w):
            Zr = 0.0
            Zi = 0.0
            Tr = 0.0
            Ti = 0.0
            Cr = x * invN + xmin
            if (checknext):
                for k in range(MAXITER):
                    Zi = 2 * Zr * Zi + Ci
                    Zr = Tr - Ti + Cr
                    Ti = Zi * Zi
                    Tr = Zr * Zr
                    if (Tr + Ti) > LIMIT:
                        break
                if k == MAXITER:
                    out.write("1")
                else:
                    out.write("0")
                    checknext = False
            else:
                for k in range(MAXITER):
                    Zi = 2 * Zr * Zi + Ci
                    Zr = Tr - Ti + Cr
                    Ti = Zi * Zi
                    Tr = Zr * Zr
            if (Tr + Ti) < LIMIT:
                out.write("1")
            else:
                out.write("0")
                checknext = True

        out.write("\n")


for i in range(20):
    mandelbrot(200, 200)

He modificado todos los códigos fuente del benchmark de hace seis años para hacerlo funcionar con Python3.
Hay alguno como el código nbody.py solo funciona con Python2, pero el resto se puede cambiar con facilidad.
Y nbody solo hay que cambiar una línea. Ahora ya me funciona bien.

[Imagen: NmAGFIu.png]
Imagino que Benoit no conoce Python.

¿ Merece la pena que se lo comuniquemos ?. Si en la web de Gambas se sigue haciendo publicidad con este test de comparación. Puede que interese mejorarlo.
Como funciona pues nadie lo echa de menos. Pero en que han pasado seis años y ni "pio" sobre como está el código. Undecided
Luego queremos que funcione y probarlo.

A ver, los que habéis estudiado algo de Python, probar el código original, sin modificar y os llevareis una sorpresa.
Recordar que necesitáis bajar las fuentes de Gambas.

Saludos
guizans 16-12-2021, 23:23
Hola.

Es tremendamente curioso. El programa que estoy haciendo funciona perfectamente con Gambas 3.14.3, que es la versión que está por defecto en los repositos de Ubuntu. Ahora necesito imprimir algo, y uso la clase gb.report2 (supongo que la gb.report ya dejó de existir, a pesar de estar en los repositos). Pues bien, añado la clase, ejecuto el programa y este no funciona, me da error. Cosa rara rara, ya que no he tocado nada más. Elimino una carpeta que se crea al iniciar por primera vez el programa y este funciona, pero al cerrarlo y volver a ejecutarlo, otra vez el error. He capturado el error y me pone esto:
Cita:Text: Unable to load SVG file
Where: Stock.DoLoadIcon.383
Code: -1
 El tema que me salta el error en la parte del código que comprueba si la carpeta  y la base de datos SQLite3 existe en el ordenador, en caso de no existir lo copia al disco duro. Pero esta parte del código nunca me dio ningún error, hasta que añadí el componente gb.report2.

 Solo se me ocurren dos posibles soluciones, imprimir lo que necesito sin este componente o añadir el correspondiente PPA de Gambas3 para usar la última versión.

Una jodienda en cualquier caso. Sad Sad Sad

Un saludo.
Páginas (564):    1 341 342 343 344 345 564   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: DarkWolf
Temas del foro: 1,742
Mensajes del foro: 9,031
Últimos temas
Ordenar en un TableView
Foro: General
Último mensaje por: guizans, 05-11-2025, 23:26
Respuestas: 5 - Vistas: 139
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 02-11-2025, 13:36
Respuestas: 9 - Vistas: 1,576
Reportes de Gambas
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: Alberto59, 27-10-2025, 16:34
Respuestas: 2 - Vistas: 1,342
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tercoide, 22-10-2025, 15:57
Respuestas: 0 - Vistas: 118
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.