22 diciembre 2011

Python: Script que me abre una página web u otra según un numero al azar

Este es un programita breve y que se podría abreviar más, que elige al azar una emisora de radio para abrirla en un navegador.

En el primer import importo la función shuffle que es propia de la libreria random. En la segunda importo la libreria webbrowser.
En la tercera creo una lista con los nombres de las tres emisoras.
En la cuarta llamo a la función shuffle. Esta función reorganiza el listado al azar.
En las quinta y sexta imprimo la lista y el primer elemento de la lista respectivamente. Estas lineas de código las escribí para verificar el exito del la función shuffle. Pero bien podrian quitarse,... ¿para lo quéd hacen?
Luego, abro una ruta u otra dependiendo del nombre de emisora seleccionado utilizado la función open_new de la libreria webbrowser.

from random import shuffle
import webbrowser
listaDeEmisoras=["Kiss fm","M 80","Europa fm"]
shuffle(
listaDeEmisoras)
print
listaDeEmisoras
print
listaDeEmisoras[0]
if (listaDeEmisoras[0]=="Kiss fm"):
  webbrowser.open_new("http://www.kissfm.es/player/kissplayer/index.php") elif (listaDeEmisoras[0]=="Europa fm"):
  webbrowser.open_new("www.europafm.com/directo/")
elif (
listaDeEmisoras[0]=="M 80"):
  webbrowser.open_new("http://www.m80radio.com/multimedia/radios.html")


Y hasta aquí todo. Solo falta poner el .exe de este programa en Inicio para que al iniciarse Windows se ejecute.

Saludos.

¡Y FELIZ NAVIDAD!

19 diciembre 2011

C#: ¿Cómo se ordena una TList ?

Es muy sencillo. De tan fácil como es hasta cavilé demasiado.

Teniendo una lista:
TList listaDePersonasDeContacto = DataRepository.PersonsContacto.GetAll();
y esta se ordena así:
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString());

Por cierto, PersonasContactoColumn.StrApellido1.ToString() devuelve la columna por la que queremos ordenar. En este caso el primer apellido del contacto.

Saludos!

Gracias Edwin por explicarmelo porque yo me calenté mucho la cabeza. ¡Con lo tirao que está!

P.D.: Haciendo esto, indico que en caso de que haya coincidencia, mire el segundo apellido
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString() + ", " + PersonasContactoColumn.StrApellido2.ToString());

18 diciembre 2011

Ejemplo básico de interface gráfca de usuario con Python

Para hacer interfaces gráficas utilizando Python existen muchas librerias que se pueden descargar e instalar en el equipo. Aquí hay un listado http://wiki.python.org/moin/GuiProgramming. No obstante para este ejemplo se usa Tkinter. Siendo está ya la integrada al instalar Python.

En elejemplo de hoy vamos a utilizar Tkinter para crer un botón que al ppulsarlo nos escriba la palabra "Hola".

En primer lugar hacemos la importación de la libreria para tener todos sus componentes disponibles:
from Tkinter import *

En segundo lugar creamos la ventana principal. Para ello usamos Frame, que es uno de los componentes de la libreria Tkinter. Frame es la ventana principal.
frame=Frame()

Para visualizar el texto utilizaremos el componente Entry de Python porque este componente sirve para meter o visualizar una linea. En cambio si fuesen varias utilizariamos Text.

Para crear nuestro cmpo de texto necesitamos crear una variable del tipo StringVar. Esta variable simplemente contiene una caja de texto le diremos a nuestra caja de texto que en ella guarde el texto. La forma de hacerlo es así de sencilla:
v = StringVar() campoTexto = Entry(frame, textvariable=v )
Con esto hemos creado la variable v de tipo StringVar y luego hemos creado campoTexto de tipo Entry. Los parametros: frame indica donde queremos que vaya el campo de texto y con textvariable=v indicamos cual es la StringVar donde queremos que deje el texto escrito por el usuario o en el que queremos dejr nosotros el texto que se muestre. Los métodos v.get() y v.set() nos van a permitir obtener o fijar el texto.

Para el botón, usaremos el componente Button de Python.
boton=Button(frame, text="Saludar",command=saludando)
Aquí de nuevo, frame, indica donde queremos que aparezca el botón. Con text indicamos que la propiedad text valga "Saludar" y que la función qu se ejecute al pulsar el botón se llame Saludando. Por supuesto esta función se debe de definir antes de escribir este código:
def saludando():
  v.set("Hola")
Esta función simplemente pone Hola dentro del StringVar que asociamos previamente al campo de texto Entry. Cuando se ejecute esta función, se meterá dentro de v un texto "Hola" y este se mostrará en el campo Entry de la ventana.

El código completo es este:

from Tkinter import *

def saludando():
  v.set("Hola")

frame=Frame()
v=StringVar()
campo=Texto=Entry(frame,textvariable=v)
boton=Button(frame,text="Saludar",command=saludando)
buton.pack(side=LEFT)

v = StringVar()
text = Entry(frame, textvariable=v )
text.pack(side=LEFT)

frame.pack()
frame.mainloop()

Nos quedan por explicar algunos detalles:
Para cada widguet (button, entry, frame,...) necesitaremos llamar a su método pack() el cual se encarga de colocar cadda elemento de la ventana dándole el tamaño adecuado. Podemos dejar los parametros vacios, dejando que elija, o bien, indicar la ubicación nosotros mismos. En estas lineas lo pusimos nosotros mismos: text.pack(side=LEFT) y text.pack(side=LEFT). Asi aparecerán en horizontal.

Una vez terminado el programa, para siga activo y la ventana funcionando, debemos meternos en el bucle principal de tratamiento de eventos de frame. Es decir, hacemos la llamada a frame.mainloop(). Si no lo hacemos así, el programa termina inmediatamente y no veremos nada (salvo que escribamos línea a línea en el intérprete de python). Esta llamada lo único que tiene dentro es un bucle infinito, en el que va recogiendo los eventos de teclado o ratón para "despacharlos" a los componentes de la ventana y que estos puedan tratarlos, por ejemplo, el click sobre el botón.



Est articulo lo he sacado de http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python.


Saludos. Y mañana mas






12 diciembre 2011

C #; Cómo crear checkbox en tiempo de ejecución.

En este caso he subido código que crea checkbox en tiempo de ejecución. Porque el report que lo utiliza requiere que por cada archivo localizado en un directorio (incluyendo subdirectorios) se añada así al informe, en lugar de como texto normal en una label normal. Supongo que es un pijotada pero me ha servido para aprender una cosa nueva. Asique ya me podria ir a la cama sino fuese porque son las 9:20.


private void CrearCheckbox(string texto)

{



posicionY += 23; /*incremento la posicionY (esta variabled dtermina donde se va a ubicar el checkbox)*/
try
{
Detail.HeightF = posicionY; /*aumento la longitud del detalle*/
DevExpress.XtraReports.UI.XRCheckBox chkNombreFichero1 = new XRCheckBox(); /*creo el checkbox*/
chkNombreFichero1.Name = "chk" + numeroDeFicheros.ToString(); /*le doy nombre*/
chkNombreFichero1.WidthF = 615; /*le doy ancho */
chkNombreFichero1.HeightF = 23; /*le doy altura*/
chkNombreFichero1.Text = texto; /*le doy el mismo valor que el nombre del fichero*/
chkNombreFichero1.TopF = posicionY - 23; /*lo coloco en la posición*/
chkNombreFichero1.Checked = true; /*lo activo*/
chkNombreFichero1.Visible = true;
numeroDeFicheros += 1; //incremento el valor para que los nombres no se repitan
Detail.Controls.Add(chkNombreFichero1);
}
catch (Exception ex)
{
}
}

Saludos desde Albacete.

08 diciembre 2011

En C#: listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)

Para desarrollar este código utilizo un botón (llamado btnVer) y una caja de texto (llamada txtContenido).
En la caja de texto cargo los nombres de todos los ficheros contenidos en la ruta donde está el proyecto (no olvidemos que este código nació para probar un algoritmo que en el trabajo no me salia, y en casa sí). El botón hace la llamada a los procesos.

Así es el resultado del formulario al ejecutar el programa:


Código del botón:
private void btnVer_Click(object sender, EventArgs e)
{
txtContenedor.Text = "";
ExtraerFicherorDelSubDirectorio(Application.StartupPath);
}

Ahora el código de ExtraerFicherorDelSubDirectorio (string ruta) que es una función recursiva:

private void ExtraerFicherorDelSubDirectorio(string ruta)
{
DirectoryInfo oDirectorio = new DirectoryInfo(ruta);

//obtengo ls ficheros contenidos en la ruta
foreach (FileInfo file in oDirectorio.GetFiles())
{
txtContenedor.Text += file.Name+"\n";

}
//obtego los subdirectorios que cuelgan de la ruta
foreach (DirectoryInfo subdirectorios in oDirectorio.GetDirectories())
{
ExtraerFicherorDelSubDirectorio(subdirectorios.FullName);
}

}


Saludos.