Thread Größe eines Frames/Canvas ermitteln (7 answers)
Opened by seb at 2007-01-10 19:54

PerlProfi
 2007-01-11 19:03
#46115 #46115
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
width() und height() sind aber die Methoden die du suchst.

Das folgende Programm demonstriert es dir mal:
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
#!/usr/bin/perl
use strict;
use warnings 'all';
use Tk;

# MainWindow erzeugen
my $mw = tkinit();

# Canvas erstellen und platzieren
my $c = $mw->Canvas(-background => "white")->grid(-row => 0, -column => 0, -columnspan => 2, -sticky => "ew");

# Canvas strecken(wie -expand bei pack())
$mw->gridColumnconfigure(0, -weight => 1);
$mw->gridColumnconfigure(1, -weight => 1);
$mw->gridRowconfigure(0, -weight => 1);

# Fenster mappen(es wird gezeichnet)
$mw->update();

# Breite und Höhe vom Canvas ausgeben
print "Breite: ", $c->width(), "\nHoehe: ", $c->height(), "\n";

# Button erstellen, mit dem man immer die aktuelle Größe des Canvas ausgeben kann
$mw->Button(-text => "Canvas Größe ausgeben", -command => sub { print "Breite: ", $c->width(), "\nHoehe: ", $c->height(), "\n"})->grid;

# MainLoop starten
MainLoop;

In dem Beispiel wird das Canvas natürlich nur horizontal gestreckt. Dabei verändert sich nunmal die Höhe nicht.
Aber an der Breite kannst du es schön sehen. Und am Anfang steht da auch nicht 1.

Die Fehlermeldung, die du bekommen hast, hat wohl damit zutun, dass es $mw in dem scope wo du update() aufgerufen hast nicht gibt.

MfG PerlProfi

View full thread Größe eines Frames/Canvas ermitteln