Frage: Ich möchte ein Fenster (Tk::MainWindow) erstellen, das eine festgelegte Höhe und Breite hat.
Aber wenn ein Widget in das Fenster eingefügt wird (z.B. mit grid
oder pack
), dann hat das Fenster genau die Maße des Widgets.
Beispiel:
#!perl
use Tk;
my $mw = Tk::MainWindow->new(-title=>'AppName',-width=>'600',-height=>'600');
# funktioniert, die Größe ändert sich nicht
$mw->MainLoop();
#!perl
use Tk;
my $mw = Tk::MainWindow->new(-title=>'AppName',-width=>'600',-height=>'600');
$mw->Button(-text => 'click me')->pack;
# funktioniert nicht, die Fenster-Größe wird auf das Widget reduziert
$mw->MainLoop();
Antwort: damit sich die Fenstergröße nicht ändert, wenn ein Widget gepackt wird, muss mit packPropagate(0)
oder gridPropagate(0)
gearbeitet werden.
Siehe auch Abschnitt "Fenstergröße festlegen" in Perl/Tk - Tipps und Tricks.
Beispiel:
#!perl
use Tk;
my $mw = Tk::MainWindow->new(-title=>'AppName',-width=>'600',-height=>'600');
$mw->packPropagate(0);
$mw->Button(-text => 'click me')->pack;
$mw->MainLoop();