Thread [TK] MListBox - Aktualisierung der Inhalte (3 answers)
Opened by YAPD at 2016-09-27 18:19

Linuxer
 2016-09-27 23:13
#185446 #185446
User since
2006-01-27
3872 Artikel
HausmeisterIn

user image
Hi, ich muss vorweg sagen, dass ich mich nie tiefergehend mit irgendeinem GUI-Framework auseinandergesetzt habe.
Mein Wissen basiert auf zusammengeklaubten Fragmenten, um etwas lauffähiges zusammenzuschustern.

Du verwendest eine Methode deleteEntry(), woher soll die stammen?

YAPD
Code: (dl )
1
2
3
...
$Auflistung_Benutzer_Inhalte -> deleteEntry( 0 , end );
...


Bei meinem Test erzeugt das eine Fehlermeldung:

Code: (dl )
Tk::Error: Failed to AUTOLOAD 'Tk::MListbox::deleteEntry' at TkTest.pl line 52.


Danach findet keine weitere Bearbeitung der Daten statt, will sagen, es werden keine neuen Daten ins Widget eingefügt.

Ersetze ich das deleteEntry aber durch ein delete, wie es in der perldoc zu CPAN:Tk::MListbox beschrieben ist, funktioniert mein Testcode anstandslos.

Hier noch mein Testcode:

more (13.5kb):

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
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
#! /usr/bin/perl
use strict;
use warnings;

use 5.010;

use Tk;
use Tk::MListbox;

my $width  = 1184;
my $height =  318;

my $mw = MainWindow->new( -title => 'testing' );

$mw->geometry( join 'x', $width, $height );

my $menu = $mw->Menu( -type => 'menubar' );
$mw->configure( -menu => $menu );

my $listbox = $mw->MListbox(
        -columns => [
                [ -text => 'name', sortable => 1 ],
                [ -text => 'num', sortable => 1 ],
        ],
);

$listbox->insert( 'end', [ foo => 1 ] );
$listbox->insert( 'end', [ bar => 4 ] );

$listbox->pack();

$listbox->insert( 'end', [ fuz => 8 ] );


my $btn_update = $mw->Button(
        -text    => 'update',
        -command => sub { _update_mlistbox( $listbox ) },
);

my $btn_quit = $mw->Button(
        -text => 'quit',
        -command => sub { exit 0; },
);

$btn_update->pack;
$btn_quit->pack;


sub _update_mlistbox {
        my $list = shift;
        
        # NOT WORKING
        #$list->deleteEntry(0, 'end');

        # working
        $list->delete(0, 'end');

        # update/insert new data
        $listbox->insert( 'end', [ 1 => 'foo' ] );
        $listbox->insert( 'end', [ 4 => 'bar' ] );

}

MainLoop();


__END__

meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread [TK] MListBox - Aktualisierung der Inhalte