GUI mit Perl/Tk

Perl/Tk-GUI ohne Konsolen-Fenster starten

Wenn man ein Perl/Tk-Programm schreibt, öffnet sich auf Windows immer außer dem Programmfenster ein schwarzes Fenster - eine Konsole. Diese kann man mit Win32::Console ausblenden:

BEGIN {
    if( $^O eq 'MSWin32' ) {
        require Win32::Console;
        Win32::Console::Free();
    }
}

$^O enthält ein O wie in Oma, keine Null.
Hier noch ein vollständiges Beispiel:

#!perl

BEGIN {
    if( $^O eq 'MSWin32' ) {
        require Win32::Console;
        Win32::Console::Free();
    }
}

use strict;
use warnings;
use utf8;
use Tk;
use Tk::TableMatrix::Spreadsheet;

my $mw = Tk::MainWindow->new();
$mw->configure(-title => "Umgebungsvariablen");
$mw->minsize(qw(500 200));

my %table_data = (
	'0,0' => 'Key',
	'0,1' => 'Value',
);

my $height = scalar keys %ENV;

my $table = $mw->Scrolled('Spreadsheet',
	-scrollbars		=> 'se',
	-cols 			=> 2,
	-width 			=> 2,
	-rows 			=> $height,
	-titlerows 		=> 1,
	-variable		=> \%table_data,
)->pack(-fill => 'both', -expand => 1,);


insert_data($table);

$mw->MainLoop();

exit(0);

=head1 SUBS

=head2 insert_data( $table_object )

=cut

sub insert_data {
	my $tbl = shift;
	
	my $row = 1;
	while ( my ($key, $val) = each %ENV ) {
		printf("%s, %s => %s\n", $row, $key, $val);
		$tbl->set("$row,0" => $key);
		$tbl->set("$row,1" => $val);
		$row++;
	}
	
	return;
} # /insert_data

Perl/Tk-Applikationen ohne Konsole mit PerlApp

Besitzt man zufällig PerlApp von ActiveState, dann können Perl-Programme in exe-Dateien kompiliert werden. Dass die Konsole bei diesen Programmen nicht angezeigt wird, kann in PerlApp in den Optionen eingestellt werden. Die Option heißt "Hide console (GUI executable)".

Top