• Publicidad

Interfaz para un programa de Perl

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Interfaz para un programa de Perl

Notapor Stiven42 » 2016-09-14 10:30 @479

Buenos días. Espero no haber creado un tema que ya hayan solucionado con anterioridad.

Llevo ya un par de años trabajando con Perl y creado diferentes aplicativos que siempre corro en símbolos del sistema o a través de un ejecutable que hago por medio del módulo PAR::Packer.

Lo que ahora quiero es crear interfaz para todos mis programas, pero nunca lo he hecho antes. He buscado por Internet y me dan muchas opciones: pasar el código a Java, crear paquetes con aplicativos HTML, etc., pero la verdad no sé por dónde empezar.

¿Me podrían dar consejo o una guía de por dónde empezar? Muchas veces me ha ocurrido que aprendo la forma difícil de hacer las cosas y meses después descubro una forma mucho más sencilla de hacerlo.

Muchas gracias.
Stiven42
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2013-10-10 12:47 @574

Publicidad

Re: Interfaz para un programa de Perl

Notapor explorer » 2016-09-14 16:16 @719

Una forma de verlo es mirando aplicaciones que ya tienen un interfaz gráfico, como por ejemplo

Padre, usando la librería wxWidgets
Imagen

LedgerSMB, un sistema de contabilidad y ERP que usa un navegador web.
Imagen

PACManager, usando GTK+ (este lo uso todos los días)
Imagen

Hay otros entornos gráficos que son muy interesantes, como por ejemplo, Prima (en MetaCPAN)
Imagen

El venerable Tk/Perl
Imagen

Gtk2,3/Perl

Otra opción es usar Firefox como herramienta gráfica, y programarla con el sistema XUL. La ventaja que tienes es que no tienes que instalar nada (solo es necesario que el usuario tenga instalado un navegador compatible). Perl tiene mucho soporte para esto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Interfaz para un programa de Perl

Notapor Stiven42 » 2016-09-16 11:53 @536

¡¡¡Muchas gracias!!!
Voy a revisar las opciones y les comento cómo me va :D
Stiven42
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2013-10-10 12:47 @574

Re: Interfaz para un programa de Perl

Notapor MARKO » 2016-11-30 14:47 @658

explorer escribiste:El venerable Tk/Perl


Yo utilizo Tk/Perl para mis desarrollos. Te dejo un script que te permite seleccionar archivos .xls/.xlsx de un directorio y hacer algo con la ruta completa de los archivos seleccionados.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use Tk;
  4. use Tk::HList;
  5. use utf8;
  6.  
  7. system ("cls");
  8.  
  9. my ($directorio, @archivos);
  10.  
  11. #############Elementos que conforman las ventanas#########################################################################
  12.  
  13. my $FormaPrincipal = MainWindow->new(-title=>"Interfaz Gráfica");
  14. my $FrameIzquierda = $FormaPrincipal->Frame(-borderwidth => 3, -relief => 'raised');
  15. my $FrameCentro = $FormaPrincipal ->Frame(-borderwidth => 3, -relief => 'raised');
  16. my $FrameDerecha = $FormaPrincipal ->Frame(-borderwidth => 3, -relief => 'raised');
  17.  
  18. $FrameIzquierda ->pack(-side => 'left', -expand => 1, -fill => 'both');
  19. $FrameCentro ->pack(-side =>'left', -expand => 1, -fill => 'both');
  20. $FrameDerecha ->pack(-side => 'left',  -expand => 1, -fill => 'both');
  21.  
  22. $FrameIzquierda -> Button(
  23.         -text => "SELECIONA\nDIRECTORIO",
  24.         -command => sub{
  25.                                                 $directorio =$FormaPrincipal->chooseDirectory(
  26.                                                         -initialdir => 'P:\Gerencia de Mercado\Restringido\MONITOREO DEL MM',
  27.                                                         -title => 'Elija Driectorio'
  28.                                                 );
  29.  
  30.                                                 if (defined($directorio)){
  31.                                                         opendir(DIR, $directorio);
  32.                                                         undef(@archivos);
  33.                                                         foreach(readdir(DIR)){
  34.                                                                 if ($_=~ m/\.xls+$/ or $_ =~ m/\.xlsx+$/){
  35.                                                                         push (@archivos,$_);
  36.                                                                 }
  37.                                                         }
  38.                                                         close(DIR);
  39.                                                 }
  40.                                         },
  41.         -width => 10,
  42.         -height => 5,
  43.         -foreground => "red",
  44.         -background => "blue",
  45. )->pack(-expand=> 1, -fill=> "both", -side => "top" );
  46.  
  47. my $Listbox = $FrameIzquierda->Scrolled("Listbox",
  48.     -background => "white",
  49.     -scrollbars => "se",
  50.     -height => "20",
  51.     -selectmode => "extended",
  52.     -listvariable => \@archivos
  53. )->pack(-side => "top", -expand=> 1, -fill=> "both");
  54.  
  55. $FrameIzquierda -> Button(
  56.         -text => "Analiza\nArchivos",
  57.         -command => \&Analisis,
  58.         -height => 5
  59. )->pack(-side => "left" );
  60.  
  61. my $FrameBotones = $FrameDerecha -> Frame(
  62.         -borderwidth => 3,
  63.         -relief => 'sunken'
  64. )->pack(-side => 'top', -fill=> 'both');
  65.  
  66.  
  67. $FrameBotones -> Button(
  68.         -text => "Salir",
  69.         -command => sub{exit()},
  70.         -height => 5,
  71.         -width => 40
  72. )->grid(-column => 0, -row=> 7, -sticky=>'nsew',-columnspan=>'3');     
  73.  
  74. MainLoop;
  75.  
  76. #################################################################################################################
  77.  
  78. sub Analisis{
  79.        
  80.         my @indices = $Listbox-> curselection;
  81.         if (scalar(@indices)!=0){
  82.                
  83.                 foreach my $indice(@indices){
  84.                         my $archivo = $archivos[$indice];
  85.                         my $rutacompleta = $directorio.'/'.$archivo;
  86.                         print "$rutacompleta\n";
  87.                 }
  88.  
  89.         }
  90.         else{
  91.  
  92.                 $FormaPrincipal->messageBox(-title => 'Error',
  93.         -message => 'Seleccione Archivo',
  94.         -type => 'Ok');
  95.                
  96.         }              
  97.  
  98. }
  99.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Éxitos.
Adjuntos
Interfaz.JPG
Interfaz.JPG (24.4 KiB) Visto 2174 veces
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados