Thread Splashscreen: Graphische Oberfläche (9 answers)
Opened by ahnungsloser at 2004-01-11 20:14

Crian
 2004-01-23 11:28
#46699 #46699
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
[quote=Crian,12.01.2004, 10:23]Sonst mach Dir doch einfach einen eigenen Splashscreen mit einem Toplevel-Fenster und grab und focus...

Oder Du erstellst erst ein MainWindow, das nur aus dem Splashscreen besteht, zerstörst es nach dem Laden der Daten und baust dann erst Dein eigentliches MainWindow auf (falls das nicht zu lange dauert...).[/quote]
Ich habe inzwischen slebst auch einen Splashscreen gebraucht und habe es so gelöst:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
sub splash ($) {
# -----------------------------------------------------------------------------
# sub          : s p l a s h
# -----------------------------------------------------------------------------
# Autor        : CD
# Aufgabe      : Zeigt einen Splash-Screen zu Beginn des Programms an.
# Parameter    : Referenz auf auszuführende Funktion oder Closure
# Rückgabewert : keiner
# -----------------------------------------------------------------------------
# 0.0.1 - 22.01.2004 - CD - Erstellt
# -----------------------------------------------------------------------------

    print "splash()\n" if $Conf{debug};
    my $f = shift;

    die "splash: Erwarte Parameter auf Funktion!" unless defined $f and
                                                         ref $f eq 'CODE';

    #--------------------------------------------------------------------------
    # Splash-Fenster erstellen:
    #--------------------------------------------------------------------------
    my $splash = new MainWindow(-background => 'blue',
                                -cursor     => 'watch',
                               );


    $splash->Label(-text       => 'Programm',
                   -font       => '{Arial} 150 {normal}',
                   -foreground => 'yellow',
                   -background => 'blue',
                   -cursor     => 'watch',
                  )
            ->pack(-side       => 'top',
                   -expand     => 1,
                   -fill       => 'both',
                  );
    $splash->Label(-text       => '... loading ...',
                   -anchor     => 'n',
                   -foreground => 'yellow',
                   -background => 'blue',
                   -cursor     => 'watch',
                  )
            ->pack(-side => 'bottom',
                   -expand => 0,
                   -fill => 'none',
                  );


    # Größe des Fensters:
    my  $windowHeight  = "600";
    my  $windowWidth   = "800";

    # Bildschirmgröße holen:
    my  $screenHeight  = $splash->screenheight();
    my  $screenWidth   = $splash->screenwidth();

    # Splashscreen zentrieren:
    $splash->geometry($windowWidth . 'x' . $windowHeight .
                      '+' . int($screenWidth/2 - $windowWidth/2) .
                      '+' . int($screenHeight/2 - $windowHeight/2)
                     );

    # Größe festlegen:
    $splash->minsize( $windowWidth, $windowHeight);
    $splash->maxsize( $windowWidth, $windowHeight);

    $splash->overrideredirect(1);

    $splash->bind('<<toete>>' => sub { $splash->destroy() } );

    $splash->after(100,
                   sub {
                         &$f();
                         $splash->eventGenerate('<<toete>>', -when => 'now');
                       }
                  );
    MainLoop();

} # sub splash


Der Aufruf zu Beginn meines Programms sieht dann so aus:

Code: (dl )
1
2
3
4
5
6
splash( sub { lies_daten();
             lies_tests();
           } );
tk_main();
MainLoop();
exit;


tk_main startet die Oberfläche des eigentlichen Programms...

Man kann natürlich im Splashfenster auf irgendwelche Bilder anzeigen, oder was immer man möchte. Das Grundgerüst ist ja da :)\n\n

<!--EDIT|Crian|1074850403-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Splashscreen: Graphische Oberfläche