Desenvolupament d'aplicacions amb Python 3, Glade i GTK + 3 en Windows

Introducció

En GNU / Linux desenvolupar aplicacions amb Python 3, Glade i GTK + 3 és molt fàcil, els paquets vénen per defecte en la majoria de distribucions.

Gràcies a Glade podem crear interfícies d'usuari ràpida i fàcilment i després usar-les en conjunt amb Python. Per aconseguir-ho es fa servir PyGObject gràcies a el sistema d'introspecció que ofereix GNOME, el que facilita molt el desenvolupament ràpid d'aplicacions (RAD); a més és possible usar les nostres interfícies creades amb Glade des d'altres llenguatges de programació.

El problema es presenta quan volem usar les nostres aplicacions en Microsoft Windows, ja que fins fa poc no existien oficialment els paquets per aquest sistema.

Amb el present tutorial es pretén que les aplicacions que s'han fet en GNU / Linux utilitzant Python 3 i GTK + 3 s'executin sense problemes a Windows.

requeriments

  • 3.3 Python
  • Gtk + 3
  • Glade 3.14 o superior (dissenyador d'interfícies gràfiques)
  • PyGobject

Instal·lació en Windows

Es començarà creant una carpeta anomenada eSCADA o una altra de la seva preferència i guardarem-hi tots els paquets que es descarreguen.

Descàrrega de paquets d'instal·lació

Descarregar Python 3.3

Es pot descarregar des de la pàgina oficial de Python www.python.org

Descarregar instal·lador Python

Descarregar instal·lador Python

A l'fer clic a l'enllaç (Instal·lador de Windows) Es descarregarà l'instal·lador de Python.

descarregar Glade

Lloc de descàrrega: glade.gnome.org

Tant la versió de Python com la de Glade són de 32 bits, però s'executen sense problemes en sistemes de 64 bits

pàgina Glade

pàgina Glade

descarregar PyGObject

Lloc de descàrrega: https://wiki.gnome.org/PyGObject

Hem de descarregar la versió per a GTK +3

PyGObject

PyGObject

PyGObject a Google code

PyGObject a Google code

Instal·lació dels paquets

Bé fins aquest punt ja tenim tots els paquets descarregats a la carpeta eSCADA i tal com hem descarregat cada paquet començarem primer amb la instal·lació de Python.

paquets descarregats

paquets descarregats

Instal·lació de Python

La instal·lació és molt senzilla, l'assistent ens guiarà en el procés; deixem totes les opcions marcades per defecte.

Programa d'instal·lació Python

Programa d'instal·lació Python

Com es veu en la imatge, Python s'instal·la a la carpeta C: \ Python33 \ per defecte, el deixem com està i continuem amb la instal·lació.

Carpeta d'instal·lació de Python

Carpeta d'instal·lació de Python

En aquest punt de la instal·lació seleccionem l'opció Add python.exe to Path, Amb la finalitat que quan llancem un interpreti de Python s'executi sense la necessitat de afegir-lo a l'path de sistema de forma manual.

Afegir Python a l'Path de sistema

Afegir Python a l'Path de sistema

Després vam finalitzar la instal·lació i Python s'haurà instal·lat en el nostre sistema.

Instal·lació de Glade

La instal·lació de Glade no representa cap problema executem el programa d'instal·lació i seguim els passos de l'assistent.

instal·lar glade

instal·lar glade

Instal·lació de PyGObject

Havíem descarregat el paquet pygi-aio-3.4.2rev11.7z, Aquest paquet inclou PyGObject per Python 3.3 i les llibreries GTK + 3 per a Windows, que està comprimit amb 7-zip, El descomprimim i tindrem una carpeta amb el següent contingut:

Contingut de la carpeta pygi-aio-3.4.2rev11.7

Contingut de la carpeta pygi-aio-3.4.2rev11.7

Ara copiem la carpeta gtk a C: \ Python33 \ Lib \ site-packages que és on s'instal·len els paquets de tercers per Python.

Copia carpeta gtk

Copia carpeta gtk

Carpeta gtk a C: \ Python33 \ Lib \ site-packages

Carpeta gtk a C: \ Python33 \ Lib \ site-packages

Tornem a la nostra carpeta pygi-aio-3.4.2rev11 i obrim la carpeta pi33 per la versió de Python que és la 3.3

Contingut de la carpeta py33

Contingut de la carpeta py33

seleccionem tot el contingut de la carpeta pi33 i el tornem a copiar dins la carpeta C: \ Python33 \ Lib \ site-packages, Se'ns demanarà barrejar i sobreescriure, responem afirmativament. El contingut de la carpeta paquets del lloc quedaria com es mostra en la següent imatge:

Copiar el contingut de la carpeta py33 a C: \ Python33 \ Lib \ site-packages

Copiar el contingut de la carpeta py33 a C: \ Python33 \ Lib \ site-packages

Comprovació de la correcta instal·lació de PyGobject i GTK +3

Per comprovar que la nostra instal·lació ha estat correcta obrim el IDLE de Python i importem les llibreries GTK + 3 i si no tenim cap missatge d'error tot haurà estat fet correctament.

from gi.repository import Gtk

PyGobject i GTK + 3 instal·lats correctament

PyGobject i GTK + 3 instal·lats correctament


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   joaquin va dir

    ¿I per que GTK? ¿No seria millor desenvolupar en QT? a més de ser multiplataforma i molts diuen que és el futiro

    1.    artus va dir

      Bé les dues grans llibreries gràfiques de l'escriptori GNU / Linux són GTK i QT, cadascú triï la de la seva preferència. No hi ha per què barallar-se.

      La diferència de GTK amb QT és que el segon és un framework, molt bo per cert, però a l'ésser un framework consumeix una mica més de recursos.

      Per exemple Mozilla Firefox, Google Chrome, LibreOffice i un llarg etcètera estan fets amb GTK; això no vol dir que sigui millor que QT, cada qui haurà de triar el que s'ajusti a les seves preferències i necessitats, no volem causar una discussió a l'respecte.

      1.    pandev92 va dir

        Google chrome des de la versió 33, deixa gtk.

  2.   rolo va dir

    i perquè la expicacion per windows i no linux

    1.    Germán va dir

      Serà perquè en Linux ja està tot empaquetat i en els respositorios oficials de cada distro? En Fedora, per exemple, ja tinc Python 3, Gtk + 3 i PyGobject instal·lats per default. Si vull Glade, és només «yum install glade». Fàcil, no? 🙂

    2.    artus va dir

      Perquè com diu Germán, per a les distribucions GNU / Linux ja es troben empaquetats i és molt fàcil instal·lar-los; per exemple per a instal·lar glade en Debian és molt senzill:
      aptitude install glade

  3.   Marcelo va dir

    Si vull fer servir Python 2.7 els passos serien els mateixos?
    Òbviament, instal·lant el Python 2.7 de 32 bits (per més que faci servir el SO en 64 bits) i en comptes de la carpeta py33 aniria la 2.7. Funcionaria?
    Gràcies.

    1.    artus va dir

      Doncs sí, si tens algun problema em deixes un comentari.

      Sort.

      1.    Marcelo va dir

        Gràcies, ja vaig provar i per ara em funciona el «Hola, món».

        Veig si aconsegueixo algun bon tutorial de l'pyGTK3 o com es digui i qualsevol problema, avís.

          1.    Marcelo va dir

            Caram! Moltes gràcies!

          2.    Marcelo va dir

            Provant el GTK3 amb Python 2.7 en Windows i seguint el tutorial. Fins ara tots els programes em funcionen, excepte el de l'Capítol 14 (IconView -> https://python-gtk-3-tutorial.readthedocs.org/en/latest/iconview.html)

            Em dóna el següent error:
            Traceback (última trucada més recent):
            File «C: \ Users \ Usuari \ Desktop \ prueba.py», line 24, in
            win = IconViewWindow ()
            File «C: \ Users \ Usuari \ Desktop \ prueba.py», line 19, in __init__
            pixbuf = Gtk.IconTheme.get_default (). load_icon (icon, 64, 0)
            File «C: \ Python27 \ lib \ site-packages \ gi \ types.py», line 47, in function
            return info.invoke (* args, ** kwargs)
            GError: Icon 'gtk-cut' not present in theme

            Ho vaig intentar amb altres icones i tampoc funciona. Em falta instal·lar algun tema? Gràcies des de ja.

          3.    Marcelo va dir

            Tampoc em va l'exemple 19. Drag and Drop.

            La funció que crida en tots dos casos i que és on em dóna error és:

            pixbuf = Gtk.IconTheme.get_default (). load_icon (icon_name, 16, 0)

            No em troba la icona, però en altres exemples si els pot utilitzar. Només em dóna error quan ho vull fer servir amb aquesta funció (aquí icon_name pot reemplaçar-se amb algun valor com ara Gtk.STOCK_CUT o qualsevol i dóna exactament el mateix error).

          4.    Marcelo va dir

            Segueixo parlant sol. El que em funciona en altres exemples és que les imatges es em carreguen en els botons. No puc carregar les icones amb la funció que ve en els dos exemples que vaig donar abans.

          5.    artus va dir

            Crec que l'error és clar:
            GError: Icon 'gtk-cut' not present in theme

            Segons sembla aquesta icona no està disponible, usa un altre icona. Probablement el mantenidor de l'paquet no va incloure les icones del tema o no es pot trobar a la ruta per defecte, fa servir una distribució de GNU / Linux i mira si segueix apareixent el mateix error.

            Respecte a la pregunta 19, sembla estar relacionat amb la versió de PyGobject, a la part superior de la documentació diu:

            Nota
            Versions of PyGObject = 3.0.3 és requerida per following examples to work.

            La versió que tu tens és la 3.0, prova en una distribució de GNU / Linux; i doncs hem d'esperar que actualitzin el paquet (per a Windows) o en tot cas el pots compilar per tu mateix.

            Salutacions i segueix endavant.

          6.    Marcelo va dir

            En Ubuntu em funcionen perfecte tots els exemples de l'tutorial. Al Windows, segueix sense funcionar. Vaig a haver d'esperar. Un altre que no camina és l'exemple de l'Spinner, que no fa l'animació. Salutacions i gràcies.

  4.   Yoshua va dir

    He seguit el tutorial d'instalacion i instal·lat tot pas a pas.
    I executant el següent codido:
    from gi.repository import Gtk

    class FestraPrincipal:
    def __init __ (self):
    filename = «/ dades / dam / exemplosPython / formularioSaudo»
    constructor = Gtk.builder ()
    constructor.add_from_file (filename)
    #diccionario on relacionem sinais amb esdeveniments
    sinais = {
    «ClickedAceptar»: self.clic_boton,
    «ActivateCadroTexto»: self.clic_boton,
    «DestroyFiestra»: Gtk.main_quit

    }
    constructor.connect_signals (sinais)
    #Obtenemos una referència do descriptor XML per poder accedir
    self.etiqueta = self.widgets_widget ( «Etiqueta»)
    self.cadroTexto = self.widgets_widget ( «CadroTexto»)

    def clic_boton (self, widget):
    text = self.cadroTexto.get_text ()
    self.etiqueta.set_text ( «onada% s»% text)

    if __name__ == »__ main__»:
    FiestraPrincipal ()
    Gtk.Main ()

    Em surt aquesta resposta:
    Traceback (última trucada més recent):
    File «C: / Users / admin / Google Drive / prova / FormularioSaudo.py», line 3, in
    from gi.repository import Gtk
    File «C: \ Python33 \ lib \ site-packages \ gi \ __ init__.py», line 27, in
    from ._gi import _API, Repository
    ImportError: DLL load failed:% 1 no és una aplicació Win32 vàlida.

    Algú sap a què es deu el problema, o tal pot ser la seva possible solució.
    Moltes gràcies.

  5.   Jesús va dir

    Interessant. Hi havia fet la instal·lació en linux, però aquesta bé l'explicació per a windows, ara el tinc en els dos. 😉

  6.   Rafa Carmona va dir

    És curiós en un windows 7 32 bits a la primera.
    En un WIndows 7 64 bits, no puc fer-ho córrer, sempre em surt;
    >>> from gi.repository import Gtk
    Traceback (última trucada més recent):
    File «», línia 1, in
    File «C: \ Python33 \ lib \ site-packages \ gi \ __ init__.py», line 27, in
    from ._gi import _API
    ImportError: DLL load failed: No s'ha trobat el procés especificat.

    Ho he intentat de totes formes possibles, ja vaig perdre la il·lusió d'instal·lar-lo.

    1.    artus va dir

      Veuràs les llibreries per 64 bits tenen encara alguns error, si us plau instal la versió de 32bits tant de python i GTK + perquè no tinguis problemes.

      Mai has de perdre la il·lusió 🙂

  7.   Richard va dir

    Bones estic treballant amb python + gtk3, és molt bo ara estic en un petit problema vull canviar-la icona al meu formulari (finestra) en aquest cas i ho aconsegueixo canviar-ho, des de ja gràcies, Salutacions

  8.   Jors va dir

    publica vídeos senzill de com programar en gtk + 3 i tuturiales senzills salutacions

  9.   Jose va dir

    Exelente tutorial. Moltes gràcies pel teu esforç. Salutacions.

  10.   jkmilo1030 va dir

    vaig fer tots els passos i quan vaig anar a confiarmar la instalacion em va sortir aquest error.

    Traceback (última trucada més recent):
    File «», línia 1, in
    from gi.repository import Gtk
    ImportError: No module named 'gi'