Mostrando las entradas con la etiqueta GUI. Mostrar todas las entradas
Mostrando las entradas con la etiqueta GUI. Mostrar todas las entradas

jueves, 8 de agosto de 2013

Tutorial python Gtk3 Hola Mundo

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()  




Leer más...

miércoles, 15 de mayo de 2013

Instalar firewall en Debian wheezy

Algo que tenemos que hacer principalmente al instalar un sistema operativo es asegurar las conexiones de red,ya que por ahí se puede ver afectada la seguridad de nuestro sistema y nuestros datos se pueden ver comprometidos. Como sabemos siempre hay o puede haber personas que exploten o logren explotar nuestra Pc como se dice comúnmente hackear,existen muchas formas de hacer esto de manera local o remota y en Linux no es la excepción,en este caso solo instalaremos un firewall con configuración normal,ya que directamente podemos usar ip tables,pero es un poco mas complicado asi que instalaremos UFW y GUFW para una fácil configuración de nuestro Firewall.

Tutorial

1. Instalar UFW(Uncomplicated Firewall) este programa nos comunica con ip tables de una manera mas sencilla,en otra palabras accede a las configuraciones de ip tables para Humanos :P.

Instalamos:

sudo apt-get update && sudo apt-get install ufw
Ahora configuramos con linea de comandos,en seguida instalaremos una interfaz gráfica,para que sea aun mas facil la configuracion pero ahora lanzamos los comandos:

Vemos el estado con:

sudo ufw status


Activamos con:


sudo ufw enable
Desactivamos con :

sudo ufw disable

Eso es lo mas importante,para crear reglas copy pasteo de wikipedia:

Muestra estatus detalladosudo ufw status verbose
Muestra Lista de Reglas Numeradasudo ufw status numbered
Bloquea todo el tráfico de entradasudo ufw default deny incomingEsto detendrá por defecto todo el tráfico entrante LAN desde Internet a menos que se especifique lo contrario en una regla
Permite todo el tráfico de entradasudo ufw default allow incomingEsto permitirá por defecto todo el tráfico entrante LAN a menos que se especifique lo contrario en una regla
Bloquea todo el tráfico salientesudo ufw default deny outgoingEsto detendrá por defecto todo el tráfico saliente hacia Internet LAN a menos que se especifique lo contrario en una regla
Permite todo el tráfico salientesudo ufw default allow outgoingEsto permitirá por defecto todo el tráfico saliente hacia Internet LAN a menos que se especifique lo contrario en una regla
Bloquea elpuerto 22sudo ufw deny port 22Esto detendrá a cualquiera en Internet que intente conectarse a dispositivos en el LAN usando SSH
Permite el puerto 22sudo ufw allow port 22Esto permitirá a cualquiera en Internet conectarse a dispositivos en elLAN usando SSH
Bloquea el puerto 22 solo para una persona específicasudo ufw deny from 220.60.90.55 to port 22Esto detendrá a la dirección IP 220.60.90.55 conectarse a dispositivos en el LAN usando SSH
Permite el puerto 22 solo para una persona específicasudo ufw allow from 220.60.90.55 to port 22Esto permitirá a la dirección IP 220.60.90.55 conectarse a dispositivos en el LAN usando SSH
Bloquea el puerto 22 solo para una red específicasudo ufw deny from 220.60.90.0/24 to port 22Esto detendrá a cualquiera usando una dirección IP en el rango 220.60.90.1 - 220.60.90.254 conectarse a dispositivos en el LAN usandoSSH
Permite el puerto 22 solo para una red específicasudo ufw allow from 220.60.90.0/24 to port 22Esto permitirá a cualquiera usando una dirección IP en el rango 220.60.90.1 - 220.60.90.254 conectarse a dispositivos en el LAN usandoSSH
Bloquea el puerto 53 en el UDPsudo ufw deny port 53Esto detendrá a cualquiera en Internet usando un DNS buscar dispositivos en el LAN
Permite el puerto 53 en el UDPsudo ufw allow port 53Esto permitirá a cualquiera en Internet hacer transacciones DNS sobre dispositivos en el LAN
Permite un rango de puertos TCPsudo ufw allow 2500:5000/tcpEsto permitirá a cualquiera en Internet comunicarse a cualquier puerto en el rango 2500 - 5000 en dispositivos en el LAN
Elimina un número de reglasudo ufw delete 1Esto borrará la primera regla en la lista de reglas
 Fuente : es.wikipedia.org/wiki/Uncomplicated_Firewall

Ahora si no nos gusta la linea de comandos,podemos instalar GUFW una interfaz gráfica para UFW:

Instalamos :

sudo apt-get install gufw

Lanzamos con :

gksu gufw

o con

dbus-launch gufw
En la terminal o en ejecutor (fn + alt + F2 )si no nos sale en el menu o dash de nuestro entorno de escritorio:


Para ver reglas vean Editar de GUFW,eso es todo :D


Leer más...

martes, 20 de noviembre de 2012

Curso scripting bash GUI

Esta es la ultima parte de nuestros tutoriales para aprender un poco de bash y el shell scripting :(,pero lo que vamos a ver es algo de lo mas avanzado aunque lo que les voy a mostrar no lo sea.


Se trata de crear GUI's para programas,esto depende mucho ya que hay de GUI's a GUI's



Puede haber simples menús desde la misma consola:

#!/bin/bash
clear
while :
do
echo -e "\e[1;35mMenu de Prueba\e[0m"
echo "Selecciona una opcion "
echo "1. Netstat"
echo "2. Informacion del HDD"
echo "3. Mi kernel"
echo "4. Salir"
echo -n "Selecciona una opcion {1,4} : "
read opcion
case $opcion in
 1) echo "Informacion net :"
           netstat
 ;;
          2) echo "Informacion de disco :"
  df
  ;;
 3) echo "Tu kernel es :"
  uname 
  ;;
 4) 
  echo "Hasta luego"
  echo "Saliendo..."
  sleep 3;
           exit 1; 
  ;;
          *) 
 echo "Opcion incorrecta"
         sleep 2;
 clear
 ;;
esac
done



O hasta lo que dice su nombre que es graphical user interface(GUI),interfaz gráfica para el usuario



Les puse de ejemplo zenmap ya que es una GUI de nmap

Y esto es en teoría una interfaz gráfica para una función que este programada,ya sea en Gtk,Qt,etc

Esto se puede ir hasta el uso de Gtk+ o Glade o también simplemente usar yad o zenity

En el caso de este tutorial solo veremos zenity,ya que es lo mas básico y esta muy bien apoyado en lo que hemos aprendido,ademas yad no esta para todas las distribuciones o no se instala tan fácil y en el caso de gtk,tampoco ya que seria gtkdialog y en muchas que he probado no esta en los repositorios.

En el caso de Gtk usando Gtkdialog luce así

#! /bin/bash

export MAIN_DIALOG='
<window title="Hola Mundo!!!" resizable="false" icon-name="computer">
 <vbox>
  <text>
    <label>Hola Mundo Gtk</label>
  </text>
  <hbox>
   <button ok></button>
   <button cancel></button>
  </hbox>
 </vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG



No es muy dificil,ya que solo se abren y se cierran etiquetas,como si fuese html,pero hacen falta ver algunas cosas mas para entender mejor el funcionamiento.

GUI con zenity,primero que nada instalen zenity

solo añadan zenity al comando de su distribución

paquete="zenity"


apt-get install $paquete


pacman -S $paquete


etc

Primer programa

En zenity,zenity cuenta con muchas funciones que nos facilitan bastante la programación de una GUI en Gtk,por ejemplo para hacer el Hola mundo con zenity solo basta con poner esto en terminal

 zenity --info --title="Hola mundo" --text="Hola Mundo zenity"

Y listo,ahora esto en un script se aplica así

#!/bin/bash

zenity --info --title="Hola mundo" --text="Hola Mundo zenity"

Y ejecuten

Solo den permisos 775 o  al script

chmod +x hola-script.sh


Y como bash administra sus procesos como sistema solo lo puedes ejecutar desde nautilus por ejemplo(sin abrir terminal)

Ahora esto para que sirve?

zenity tiene muchas opciones y solo basta verlas con

zenity --help

Para que nos demos cuenta.

Si usamos zenity por separado no sirve de mucho,pero si lo unimos con bash(if,variables,case,etc) si, por ejemplo

Vean este programa

#!/bin/bash

: ${palabra=`zenity --entry --title='Prueba' --text='Escribe Algo:'`}

echo "Escribiste ${palabra}"

Este lo que hace es tomar lo que se ha introducido en el entry de la ventana y la devuelve en la terminal







Este ejemplo se puede usar en algo mas grande,por ejemplo en tbashconverter:

Enlace

Vean el código, y toda la GUI se basa en zenity.

Eso es todo lo que respecta a la GUI de zenity,no les puedo mostrar mas ejemplos porque eso ya depende de que quieran programar.

Mas que nada de lo que se trata es leer la documentación de las distintas opciones que podemos usar kdialog,gtk dialog,xdialog,zenity,etc  y redirigir la GUI a las funciones que queramos realizar con el programa con lo que hemos visto,que es

Variables

Bucles

Estructuras selectivas

Funciones y rutinas

Variables especiales

Operaciones aritméticas

etc

Eso es todo sobre introducción a bash :D

Documentación de zenity

http://library.gnome.org/users/zenity/stable/usage.html.es

Ejemplos de Gtk dialog

http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/

Ejemplos kdialog

http://dns.bdat.net/kdephp/x51.html

xdialog

http://xdialog.free.fr/

Leer más...

domingo, 4 de noviembre de 2012

Programar GUI Gtk3 con Perl 2012


Como saben,si son lectores del blog soy autodidacta,o si no saben soy autodidacta,lo que pasa es que al ser autodidacta se requiere información para estudiar y aprender



¿pero de donde viene esta información?

como yo he dicho y es la verdad para mi en lo que he visto ,uno aprende lo que le enseñan y si el maestro no es bueno el alumno tampoco(a lo mejor si nunca se sabe),pero uno cuando es su propio maestro tiene que buscar su fuente de información

En mi caso el software libre me ayuda bastante al dejarme ver el código fuente del programa,de lo contrario tendría que usar ingeniería inversa en los programas de Windows y eso es ilegal,asi que esa es una manera ver los programas que ya han hecho programadores de universidad y modificar el código otra es en libros,los cuales he conseguido algunos de C# Java,AJAX,ensamblador,etc los cuales no leo mucho porque ya son de hace un tiempo,otra manera es en PDF libros en pdf de universidades Ingenieros en informática,

y en este caso quien mejor que la documentación de GTK,si en el sitio de GTK tienen mucha documentación sobre g++,python y gtk,etc pero en este caso perl y Gtk 3.

Así que vamos a recurrir a la fuente del conocimiento,a la propia documentación de GTK

Tutorial

Nota:No vamos a ver programación aquí,solo vamos a descargar algunos ejemplos,manuales y preparar nuestro sistema para poder programar en perl usando Gtk3 -init

1.Instalamos cpan

Tutorial

2.Instalamos el modulo Gtk3

su


cpan


install Gtk3

3.Instalamos git

Ubuntu

sudo apt-get install git

Gentoo(leer documentación)

http://en.gentoo-wiki.com/wiki/Git

Archlinux

sudo pacman -S git

openSUSE

sudo zypper in git

Son las distribuciones que uso

Googlea para la tuya

4.Descargamos la documentación

cd ~

git clone https://github.com/kevinphilp/Perl-gtk3-Tutorial

Les creara una carpeta en el home llamada Perl gtk3 Tutorial




Trae muchos ejemplos (scripts.pl) y tutoriales .pdf

Aprenderás bastante con esa documentación

Mas documentación: 


Enlace


Eso es todo si aun les gusta mas python  que perl pueden ver que se puede hacer lo mismo

Por ejemplo habíamos visto el navegador Web Qt escrito en python recuerdan

Enlace


Bueno yo programe uno en Perl con Gtk 3 y Webkit

Ami estilo,eso quiere decir uso de terminal y ventanas en conjunto



Necesitan Gtk3::WebKit

En cpan

install Gtk3::WebKit

Y ahora el enlace

Enlace

Después le pongo mas botones con vbox y mas funciones
Leer más...