Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10778[/thread]

Überlangen Text darstellen

Leser: 2


<< >> 9 Einträge, 1 Seite
TheBigfoot
 2007-11-12 09:35
#102230 #102230
User since
2007-10-15
5 Artikel
BenutzerIn
[default_avatar]
Hey,
ich suche eine Möglichkeit mit Tk langen Text darzustellen. Allerdings würde ich die Dimensionen gerne eingrenzen. Gibt es irgendwelche Möglichkeiten dies darzustellen?

Ich hatte eigentlich gedacht ich nehme einfach ein Text Modul und mache dies schreibgeschützt, allerdings ist die Zuweisung eines neuen Textes relativ kompliziert damit.

Ein Label kann ich zwar in der Breite einschränken mittels -wraplength, aber wie mache ich das in der Länge?

Thx im Voraus

MfG
Dirk
pktm
 2007-11-12 11:11
#102244 #102244
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nimm doch ein Scrolled('Text', -scrollbars => 'se', ...Optionen für Tk::Text-Widget hier...).
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-11-12 11:19
#102246 #102246
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Soll das Ganze dann in einem Label dargetellt werden oder - wie von pktm vorgeschlagen - in einem Text-Widget?

Beschreib mal genauer was Du eigentlich willst!

Wie sieht Dein Text aus? Wie soll er "gekürzt" werden (150 Zeichen anzeigen, oder bis zum ersten Leerzeichen anzeigen,...)? Was soll am Ende rauskommen?

Fragen über Fragen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
TheBigfoot
 2007-11-12 11:28
#102247 #102247
User since
2007-10-15
5 Artikel
BenutzerIn
[default_avatar]
ich hab die Optionen für Tk::Text schonmal durchgeblättert.
Ich hätt für dieses Widget gerne die Flexibilität die ich mit Labels und der Option -textvariable habe, da sich der Wert dieses Elements häufiger ändert.

Müsste ich, falls ich das mit Tk::Text realisiere jedesmal jede Zeile in die Textbox schreiben? oder gibt es da eine ähnlich flexible Lösung wie mit Labels?

@renee

Also ich habe mehrere Werte in einem Grid Feld. Einer der Werte ist ein Text der zwischen 0 und 60k Zeichen haben kann, mit Zeilenumbrüchen usw.

Das ganze soll sich jetzt quasi in das Grid Feld einfügen ohne das Grid unnötig zu vergrößeren oder ewig lang zu machen. Also quasi Einschränkung der Breite und der Länge, allerdings sollt trotzdem irgendwie alles dargestellt werden.

Hoffe mein Problem ist nun klarer (-:
Spieler
 2007-11-12 15:34
#102261 #102261
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Hallo,

was -textvariable betrifft, das kannst du mit einer Tie Klasse machen.

Ich glaube sogar, so etwas gibt es auf CPAN, ich weiss aber nicht, wie es heisst.

Grüße, Christoph

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
package TiedText;
use warnings;
use strict;
require Tk;
require Tk::Text;
require Tk::Frame;

our @ISA= qw(Tk::Frame);
Tk::Widget->Construct("TiedText");

sub Populate{
my ($self,$args)=@_;
if (exists ($args->{-variable})){
$self->{inst_data}{tt_variable}=delete($args->{-variable})
}
$self->SUPER::Populate($args);
my $tw = $self->Text()->pack();
$tw ->insert('1.0',${$self->{inst_data}{tt_variable}});
$self->{inst_data}{text_widget}= $tw;
tie ${$self->{inst_data}{tt_variable}} , 'TiedText' , $self;
$self->Delegates(DEFAULT=>$tw);
$self->ConfigSpecs(DEFAULT=>[$tw]);
}


sub TIESCALAR{
my($class,$self)=@_;
return $self;
}

sub FETCH{
my $self = shift;
my $text = $self->{inst_data}{text_widget}->get('0.0','end - 1 chars');
return $text;
}

sub STORE{
my ($self,$value) = @_;
$self->{inst_data}{text_widget}->delete('1.0','end');
$self->{inst_data}{text_widget}->insert('1.0',$value);
}




package main;
use Tk;
my $mw = tkinit;
my $text = 'a teststring ';
my $t = $mw->Scrolled('TiedText',
-wrap => 'word',
-scrollbars => 'oe',
-variable => \$text)->pack;
$mw -> Button (-text => 'print',
-command => sub {print "$text\n"},
)->pack;
$mw -> Button (-text => 'modify',
-command => sub {$text .= $text},
)->pack;

MainLoop();
#Kein Kommentar
 2007-11-12 16:01
#102267 #102267
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
das modul heißt CPAN:Tk::TraceText
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Spieler
 2007-11-12 18:04
#102279 #102279
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Und scheint sogar zur Tk Distribution dazuzugehören. Auf jeden Fall ist es bei mir schon installiert.
Was man so findet...

Christoph
#Kein Kommentar
 2007-11-12 18:50
#102280 #102280
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
ich weiß, das modul war ein bisschen versteckt^^
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
ptk
 2007-11-12 19:53
#102288 #102288
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Tk::TraceText scheint nur Teil der widget-Demonstration zu sein und ist demnach nicht so richtig "offiziell".
<< >> 9 Einträge, 1 Seite



View all threads created 2007-11-12 09:35.