Schrift
[thread]10619[/thread]

Widgets in Frame dynamisch erstellen/verändern



<< >> 7 Einträge, 1 Seite
Ronnie
 2007-10-19 13:20
#101096 #101096
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo miteinander,

ich möchte wenn ein Item in meinem Tk::Tree Widget angeklickt werden, in einem Frame unterschiedliche Widgets darstellen, entsprechend dem Objekt das von dem Item repräsentiert wird um dessen Attribute bearbeiten zu können.

Ist das so möglich? Muss man dazu die Widgets in dem Frame jedesmal löschen und neue erzeugen? Hat jemand ein Snippet das sowas zeigt?

Gruß,
Ronnie
pktm
 2007-10-19 13:24
#101097 #101097
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ich habe einfach von dem Frame, in dem ich die Details angezeigt habe, alle Kindelemente gelöscht und es dann neu aufgebaut. Nur den Code davon möchtest du nicht sehen ^^
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-10-19 13:34
#101099 #101099
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (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;
use Tk;
use Tk::Tree;

my $mw = tkinit;
my $tree   = $mw->Tree( -browsecmd => \&change )->pack;
my $frame  = $mw->Frame->pack;

my %labels = (
    test  => $frame->Label( -text => 'test' ),
    hallo => $frame->Label( -text => 'hallo' ),
);

for my $key ( keys %labels ){
    $tree->add( $key , -text => $key );
}

MainLoop;

sub change{
    my $item = shift;
    $_->packForget for $frame->children;
    $labels{$item}->pack;
}
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/
pktm
 2007-10-19 13:37
#101100 #101100
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wie ist das mit den Inhalten des Frames? Bleiben die im Speicher?
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-10-19 13:43
#101101 #101101
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, die werden nur ausgeblendet ("packForget") und bei Bedarf wieder eingeblendet ("pack")...
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/
Ronnie
 2007-10-19 14:02
#101103 #101103
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo renee und pktm,

das sieht doch wirklich gut aus. Vielen Dank! Ich bin noch am überlegen, ob nicht wegen der Menge der Attribute (sind unterschiedlich) ein Tk::Table Widget sinnvoller ist?!

Wie findet ihr:
Code (perl): (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
#!/usr/bin/perl

use strict;
use warnings;

use Tk;
use Tk::Tree;
use Tk::Table;
use Tk::Label;
use Tk::Entry;

my $mw = tkinit;
my $tree   = $mw->Tree( -browsecmd => \&change )->pack;
my $table  = $mw->Table->pack;

my %labels = (
    test  => sub { my $wdgt = shift; return [$wdgt->Label( -text => 'test' ), $wdgt->Entry()] },
    hallo => sub { my $wdgt = shift; return [$wdgt->Label( -text => 'hello world' ), $wdgt->Entry()] },
);

for my $key ( keys %labels ){
    $tree->add( $key , -text => $key );
}

MainLoop;

sub change{
    my $item = shift;
    $table->clear;
    my $widgets = $labels{$item}->($table);
    $table->put(0,$_, $widgets->[$_]) for 0..$#$widgets;
    # $labels{$item}->pack;
}


Gruß,
Ronnie
#Kein Kommentar
 2007-10-19 18:59
#101120 #101120
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hmmmm, ich würde lieber den grid-manager empfehlen.

table wird nämlich sehr langsam mit vielen elementen, is aber bei der anzahl wahrscheinlich irrelevant.
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 7 Einträge, 1 Seite



View all threads created 2007-10-19 13:20.