Thread [Tk] GUI für eine Konsolenanwendung implementieren (27 answers)
Opened by vitek at 2014-03-28 14:24

hlubenow
 2014-03-28 18:02
#174472 #174472
User since
2009-02-22
875 articles
BenutzerIn
[default_avatar]
Du bist an einem schwierigen Punkt angekommen.
GUI-Anwendungen haben einen anderen Befehlsablauf als Kommandozeilenprogramme.
Erst werden Fensterelemente (Widgets) definiert, dann geht die GUI-Anwendung in einen "MainLoop". Sie wartet dann auf Benutzereingaben wie Klicks des Benutzers auf Widgets. Dies löst dazu definierte Funktionen aus. Danach kehrt die GUI-Anwendung wieder in den "MainLoop" zurück. Ein spezielles Widget (bei Windows-Anwendungen etwa der Menü-Punkt "Datei/Beenden") ruft dann eine Funktion auf, die die Anwendung insgesamt schließt.
Minimales Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use warnings;
use strict;

use Tk;

my $mw = Tk::MainWindow->new();
my $btn = $mw->Button(-text => "Click to close",
                      -command => sub { closeWindow($mw); } );
$btn->pack(-padx => 10, -pady => 10);
Tk::MainLoop();

sub closeWindow {
    my $mw = shift;
    $mw->destroy();
}

Ich habe mir ein paar Jahre lang die Perl/Tk-Syntax so zusammengestöpselt. Besser ist es allerdings, auch Perls OOP kennenzulernen, dann versteht man die Tk-Syntax, die eben objektorientiert ist, besser.
Wie gesagt, ein schwieriger Schritt, aber ein wichtiger ...

Ansonsten:
http://wiki.perl-community.de/Wissensbasis/PerlTkT...
Last edited: 2014-03-29 00:09:02 +0100 (CET)

View full thread [Tk] GUI für eine Konsolenanwendung implementieren