Schrift
[thread]10860[/thread]

Warum expandiert mein Canvas nicht?

Leser: 1


<< >> 4 Einträge, 1 Seite
Mako
 2007-11-22 13:25
#102774 #102774
User since
2007-10-05
31 Artikel
BenutzerIn
[default_avatar]
hab ich hier irgendwo einen Denkfehler oder warum expandiert mein Canvas nicht wenn ich das "Fenster" größer ziehe?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use Tk;
use Tk::Pane;
my $mw = MainWindow->new;
my $fr = $mw->Frame(-background=> 'black', -width=>"50", -height=>"500") ->pack(qw/ -side right -anchor nw /);

my $fm = $mw->Scrolled("Pane",-background=> 'green', -width=>"500", -height=>"500")->pack(-fill => "both", -side =>'left', -expand => 1);
my $pane = $fm->Subwidget("scrolled");
Tk::bind($pane, '<MouseWheel>', [ sub {$fm->yview('scroll',-($_[1] / 120)
* 3,'units')}, Ev('D')]);
$pane->focus;
$pane->Walk(sub {
$_[0]->bindtags([$pane, $_[0]->bindtags]);
});

my $c1 = $fm->Canvas( -width=> 500, -height=> 500, -bg=> 'white', -borderwidth=> '1')->pack(-expand=>1, -fill=>'both');


MainLoop;



Der Sinn des ganzen soll sein, dass wenn ich etwas zeichne was größer als die vorhandene Canvasgröße ist soll man scrollen können.

Geht das so überhaupt?
Danke
Gast Gast
 2007-11-22 18:57
#102817 #102817
Wenn du bei einem Canvas scrollen möchtest, musst du -scrollregion bei den Canvas Optionen mit angeben.
Du musst auch keinen Pane mit Scrollbars erstellen, sondern kannst einfach ein Scrolled('Canvas') erstellen, aber vorsicht: bei bestimmten Canvas Funktionen brauchst du das "richtige" Canvas, also das: $c -> Subwidget("scrolled").

MfG Horst
ptk
 2007-11-22 22:17
#102841 #102841
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Tk::Pane verhält sich ein bisschen anders als normale Tk-Widgets. Wenn die Kinder expandieren sollen, muss man im Pane -sticky => "news" angeben.

Oder man macht es so wie Horst es vorgeschlagen hat.
Mako
 2007-11-23 10:12
#102873 #102873
User since
2007-10-05
31 Artikel
BenutzerIn
[default_avatar]
Danke es funktioniert.
<< >> 4 Einträge, 1 Seite



View all threads created 2007-11-22 13:25.