Thread Scrollbars (5 answers)
Opened by Gast at 2003-11-19 16:08

Crian
 2003-11-19 19:09
#45271 #45271
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Zum Beispiel dieses (auch auf meiner Homepage zu finden):

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use Tk;

my $mw = MainWindow->new();

my $fr = $mw->Frame();

my $scrollx = $fr->Scrollbar(-orient => 'horizontal');
my $scrolly = $fr->Scrollbar();

my $ltext = $fr->Text(-width          =>  5,
                     -height         => 30,
                     -wrap           => 'none',
                     -background     => 'black',
                     -foreground     => 'green',
                     -borderwidth    => 0,
                     -selectbackground     => 'white',
                     -selectforeground     => 'blue',
                     -insertbackground => 'red',
                    );

my $rtext = $fr->Text(-width          => 80,
                     -height         => 30,
                     -wrap           => 'none',
                     -xscrollcommand => ['set' => $scrollx],
                     -yscrollcommand => ['set' => $scrolly],
                     -background     => 'lightgreen',
                     -foreground     => 'black',
                     -selectbackground     => 'black',
                     -selectforeground     => 'orange',
                     -borderwidth    => 0,
                    );

$scrollx->configure(-command => ['xview' => $rtext]);


# Den Scrollbalken so konfigurieren, dass er alle Listboxen scrollt:
$scrolly->configure(-command => sub {$ltext->yview(@_);
                                    $rtext->yview(@_);
                                   }
                  );

# Diese Methode wird aufgerufen, wenn eine der Textboxen mit der Tastatur
# gescrollt wird. Sie sorgt dafür, dass der Scrollbalken die Veränderung
# wiedergibt und die andere Textbox mitgescrollt werden.
sub scroll_textboxen {
   my ($text, $textboxes, @args) = @_;
   $scrolly->set(@args);                  # Dem Scrollbalken mitteilen,
                                          # was angezeigt wird
   my ($top, $bottom) = $text->yview();   # Ausschnitt des gescrollten
                                          # Textfeldes auslesen
   for my $t (@$textboxes) {              # Alle Textboxen auf diesen Aus-
       $t->yviewMoveto($top);             # schnitt setzen.
   }
} # sub scroll_listboxes

$ltext->configure(-yscrollcommand => [ \&scroll_textboxen,
                                      $ltext,
                                      [$ltext, $rtext],
                                    ]
                );
$rtext->configure(-yscrollcommand => [ \&scroll_textboxen,
                                      $rtext,
                                      [$ltext, $rtext],
                                    ]
                );

$scrollx->pack(-side => 'bottom',
              -fill => 'x',
             );
$scrolly->pack(-side => 'right',
              -fill => 'y',
             );
$ltext->pack(-side => 'left',
            -fill => 'y',
           );
$rtext->pack(-side   => 'left',
            -fill   => 'both',
            -expand => 1,
           );


$fr->pack(-side   => 'left',
         -fill   => 'both',
         -expand => 1,
        );

for (1..200) {
   $_ = ' ' x (5-length($_)) . $_;
   $ltext->insert('end', "$_\n");
   $rtext->insert('end', $_ x 50 . "\n");
}
$ltext->insert('end', "  201");
$rtext->insert('end', "  201" x 50);

$ltext->focus();

MainLoop();


Mit diesem Ergebnis:

http://www.duehl.de/christian/snippets/tk_zweitext...
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 Scrollbars