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
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
descarregar PyGObject
Lloc de descàrrega: https://wiki.gnome.org/PyGObject
Hem de descarregar la versió per a GTK +3
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.
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.
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ó.
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.
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·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:
Ara copiem la carpeta gtk a C: \ Python33 \ Lib \ site-packages que és on s'instal·len els paquets de tercers per Python.
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
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:
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
¿I per que GTK? ¿No seria millor desenvolupar en QT? a més de ser multiplataforma i molts diuen que és el futiro
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.
Google chrome des de la versió 33, deixa gtk.
i perquè la expicacion per windows i no linux
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? 🙂
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
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.
Doncs sí, si tens algun problema em deixes un comentari.
Sort.
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.
Tutorial:
https://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Caram! Moltes gràcies!
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.
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).
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.
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.
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.
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.
Interessant. Hi havia fet la instal·lació en linux, però aquesta bé l'explicació per a windows, ara el tinc en els dos. 😉
É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.
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ó 🙂
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
publica vídeos senzill de com programar en gtk + 3 i tuturiales senzills salutacions
Exelente tutorial. Moltes gràcies pel teu esforç. Salutacions.
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'