Hola Mundo
Bueno este es el primer tutorial de programación Python/Gtk3, voy a realizar una serie de estos a ver que tal.
Y bueno,para comenzar este tutorial necesitamos tener una editor configurado para facil programación,recomiendo alguno de estos programas:
sublimetext
kate
gedit+plugins
vim-configurado
nano-configurado
eclipse+pydev
Bueno,también necesitamos el modulo Gtk3 que esta ya en la mayoría de distribuciones de Linux,así que no creo que lo necesiten instalar.
Y saber algo de programación en Python2 o Python3.
Primero que nada en este caso vamos a manipular un modulo,lo que seria como una libreria y la mayor parte del código van a ser clases o funciones del mismo modulo,por lo cual es necesario aprender python solamente antes para manipular bien Gtk3.
Comenzamos:
Primero que nada creamos una carpeta para trabajar limpio,en mi caso voy a usar solo la terminal:
mkdir -p ~/Documentos/python/pygtk && cd ~/Documentos/python/pygtk
Si usan un IDE como eclipse o un editor como gedit,kate pueden hacerlo visualmente a la hora de guardar el programa .py (solo es la forma de hacer las cosas).
Bien,comencemos creamos un archivo con extensión .py,por ejemplo ventana.py.
En mi caso voy a usar vim:
vim ventana.py
Y empezamos a escribir lineas de código.
Antes que nada vamos a definir el hashbang:
#!/usr/bin/env python
Yo voy a usar Python 2.7.
También vamos a usar utf8 para poder usar caracteres especiales,en el texto de las ventanas,etc.
# -*- coding: utf-8 -*-
Ahora vamos a importar el modulo Gtk3:
from gi.repository import Gtk
El modulo se llama Gtk3,si queremos que sea como en la version pasada podriamos hacer algo como esto:
from gi.repository import Gtk as gtk
Pero no es muy buena practica así que trabajaremos con el nombre real.
Vamos a crear una ventana con todo lo necesario para abrirse:
win = Gtk.Window()
win.connect("delete-event",Gtk.main_quit)
win.set_title("Hola Mundo!!!")
win.show_all()
Gtk.main()
Ahora ejecutamos en una terminal:
python ventana.py
Y se abre la ventana :D.
Ahora lo explico :
win = Gtk.Window() # Inicia un objeto ventana de Gtk
win.connect("delete-event",Gtk.main_quit)
^-Llamamos la funcion connect de la clase ventana,y le pasamos el parámetro ("delete-event") que es la señal que recibe(en este caso cuando le damos clic al boton de cerrar de nuestro window manager) y el parametro ("main_quit" de Gtk) que es lo que ejecuta cuando recibe el primer parametro,en este caso cerrar todo su main.
win.set_title("Hola Mundo!!!") # Llamamos la función que coloca un titulo en la ventana,con el parámetro string("Hola Mundo).
win.show_all() # Llamamos la función show_all que muestra la ventana en la pantalla.
Gtk.main() # Iniciamos el main de Gtk que crea un bucle infinito que mantiene la ventana abierta,hasta recibir la señal de cerrado.
Bien, explicado eso,ahora vamos a añadir un botón que nos salude en la terminal,para eso creamos una variable que sera igual al boton:
button = Gtk.Button(label="Saluda") # Le pasamos un parametro definido(label) que es el nombre que mostrara el boton
Y lo añadimos a la ventana:
win.add(button)
En estos momentos podemos ejecutar el script de nuevo y se ve así,sin embargo no hace nada,ya que no esta definida la función saludar,la definimos y se la pasamos como señal al botón así:
win.button.connect('clicked',saluda) # El primer argumento es la señal(event) y el segundo la respuesta a ejecutar(callback) y hay un tercero.
Y así la función:
def saluda(x): # La x es un argumento que nos pasa la respuesta del boton automáticamente (el tercero[widget]),no lo usaremos en este momento.
print "Hola mundo!!!"
Así va el script hasta ahora:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
def saluda(x):
print "Hola mundo!!!"
win = Gtk.Window() # Inicia un objeto ventana de Gtk
win.connect("delete-event",Gtk.main_quit)
win.set_title("Hola Mundo!!!")
button = Gtk.Button(label="Saluda")
button.connect('clicked',saluda)
win.add(button)
win.show_all()
Gtk.main()
Y funciona :D
Bien antes de continuar déjenme les digo que como estamos programando hasta ahora es programación imperativa al estilo perl,ya que todas las variables,funciones están libres,se puede programar así y yo así lo hago al ser perlero,pero de ahora en adelante vamos a usar programación orientada a objetos,como debe ser :D.
Eso que hicimos en OPP(Programación Orientada a Objetos), se ve así:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
class Win(Gtk.Window): # Heredamos de la clase Window
def __init__(self):
Gtk.Window.__init__(self,title="Saluda") # Llamamos las variables y funciones de Window que estén en su __init__
self.button = Gtk.Button(label="Hola Mundo!!!")
self.button.connect('clicked',self.saluda)
# Ya no necesitamos poner window.algo ya que como heredamos solo usamos self.
self.add(self.button)
def saluda(self,x):
print "Hola Mundo"
win = Win()
win.connect("delete-event",Gtk.main_quit)
win.show_all()
Gtk.main()
Por ultimo vamos a hacer algo interesante que veremos en la siguiente parte:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
class Win(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self,title="Saluda")
self.button = Gtk.Button(label="Saluda")
self.button.connect('clicked',self.saluda)
self.box = Gtk.Box(spacing=10)
self.label = Gtk.Label()
self.label.set_label("Hola Mundo")
self.label.set_angle(25)
self.label.set_halign(Gtk.Align.END)
self.box.pack_start(self.button, True, True, 0)
self.box.pack_start(self.label, True, True, 0)
self.add(self.box)
def saluda(self,x):
self.label.set_angle(self.label.get_angle()+6)
win = Win()
win.connect("delete-event",Gtk.main_quit)
win.show_all()
Gtk.main()
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.