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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
use Tk;
use warnings;
use strict;
my $mw = MainWindow->new;
my $hauteurEcran = $mw->screenheight();
my $largeurEcran = $mw->screenwidth();
my $hauteurBarreDeTaches = ((30 * $hauteurEcran) - ((30 * $hauteurEcran) % 768))/ 768;
# quotient entier de 30 * $hauteurEcran par 768.
# Utiliser la fonction int ? La valeur 30 est présumée par moi.
my $hauteurBarreDeTitre = ((30 * $hauteurEcran) - ((30 * $hauteurEcran) % 768))/ 768;
# quotient entier de 30 * $hauteurEcran par 768. Utiliser la fonction int ? La valeur 30 est présumée par moi.
my $hauteurLibreDansApplication = ($hauteurEcran - $hauteurBarreDeTaches) - $hauteurBarreDeTitre;
my $largeurApplication = int( (95 * $largeurEcran) / 100);
# Je ne prends que les 95/100 pour retirer
# la largeur de l'espèce de barre de tâches
# que l'utilisateur risque d'avoir à droite de son écran.
$mw->configure(
-width => $largeurApplication,
-height => $hauteurLibreDansApplication);
$mw->title("");
$mw->geometry("+0+0");
my $cadreDuBoutonAfficher = $mw->Frame(
-borderwidth => 1,
-relief => 'solid',
)->place(
-relx => 0.0,
-rely => 0.04,
-relheight => 0.04,
-relwidth => 1,
-anchor => "nw",
);
my $boutonAfficher = $cadreDuBoutonAfficher->Button(
-text => "Afficher",
-command => \&routineAfficher,
)->place(
-relx => 0.55,
-rely => 0.0,
-relheight => 1.0,
-relwidth => 0.11,
-anchor => "nw",
);
my $cadreBasPourBoutonQuitter = $mw->Frame(
-borderwidth => 1,
-relief => 'solid',
)->place(
-relx => 0.0,
-rely => 1.0,
-relheight => 0.04,
-relwidth => 1.0,
-anchor => "sw",
);
my $boutonQuitter = $cadreBasPourBoutonQuitter->Button(
-text => "Quitter",
-command => \&fermerFenetrePrincipale,
)->pack(
-anchor => 'center',
-fill => 'none',
);
my $cadreDeLaZoneTexte = $mw->Frame(
-borderwidth => 1,
-relief => 'solid',
)->place(
-relx => 0.55,
-rely => 0.12,
-relheight => 0.42,
-relwidth => 0.45,
-anchor => "nw",
);
# Dans ce qui suit, on applique $controleTexte sur le cadre
# et non directement sur la fenêtre principale.
# Avec cette méthode, les ascenseurs de $controleTexte
# ne fonctionnent pas
# si on remplit $controleTexte à l'aide du bouton Afficher.
my $controleTexte = $cadreDeLaZoneTexte->Scrolled("Text",
-scrollbars => 'se',
-background => 'grey90',
)->place(
-relx => 0.0,
-rely => 0.63,
-relheight => 0.27,
-relwidth => 1.0,
-anchor => "nw",);
# Dans ce qui suit (neutralisé), on applique $controleTexte
# directement sur la fenêtre principale.
# Dans ce cas, les ascenseurs de $controleTexte
# fonctionnent normalement,
# qu'on remplisse $controleTexte par le bouton Afficher pendant l'exécution
# ou qu'on déneutralise avant l'exécution les deux instructions
# qui le remplissent directement.
# my $controleTexte = $mw->Scrolled("Text",
# -scrollbars => 'se',
# -background => 'grey90',
# )->place(
# -relx => 0.55,
# -rely => 0.26,
# -relheight => 0.11,
# -relwidth => 0.45,
# -anchor => "nw",);
# Si $controleTexte est rempli par les deux instructions
# qui suivent (et non par la fonction
# associée au bouton "Afficher"),
# les ascenseurs de $controleTexte fonctionnent,
# même si $controleTexte a été appliqué sur le cadre
# et non directement sur la fenêtre principale.
# my $titrePourDebug = "15 JUIN 2006. - Arrêté du Gouvernement de la Région de Bruxelles-Capitale modifiant l'arrêté du Gouvernement de la Région de Bruxelles-Capitale du 18 juillet 2000 portant règlement de son fonctionnement et réglant la signature des actes du Gouvernement";
# $controleTexte->insert("1.0", $titrePourDebug);
MainLoop;
sub fermerFenetrePrincipale
{
$mw->destroy()
}
sub routineAfficher
{
# Si $controleTexte a été appliqué sur le cadre
# et non directement sur la fenêtre principale,
# si les deux instructions qui suivent
# se trouvent dans la présente routine
# (et non plus haut, où elles sont neutralisées),
# et que, pendant l'exécution du programme,
# on clique sur le bouton "Afficher",
# les ascenseurs de $controleTexte ne fonctionnent pas.
my $titrePourDebug = "15 JUIN 2006. - Arrêté du Gouvernement de la Région de Bruxelles-Capitale modifiant l'arrêté du Gouvernement de la Région de Bruxelles-Capitale du 18 juillet 2000 portant règlement de son fonctionnement et réglant la signature des actes du Gouvernement";
$controleTexte->insert("1.0", $titrePourDebug);
} # Fin de la sub routineAfficher. |
Partager