Thread [Tk] -textvariable an subroutine binden (16 answers)
Opened by styx-cc at 2017-07-25 12:08

styx-cc
 2017-07-25 12:08
#187013 #187013
User since
2006-05-20
532 articles
BenutzerIn

user image
Hallo Community!
Folgender Code:
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
#!/usr/bin/perl -w
use strict;
use Tk;

my $counter = 0;
my $test = new Test();
my $mw = tkinit();

my $button1 = $mw->Button(-textvariable => \$counter)->pack();
my $button2 = $mw->Button(-textvariable => \$test->{'counter'} )->pack();

$mw->repeat(100 => sub { fetch_data($test) });
MainLoop;

sub fetch_data {
  my $obj = shift;

  $counter++;
  $obj->counter( $obj->counter()+1 );
}


package Test;
sub new {
        bless {counter => 0}, shift;
}

sub counter {
  $_[1] ? $_[0]->{'counter'} = $_[1] : $_[0]->{'counter'};
}
1;


Funktioniert wie gedacht - beide Buttons zählen synchron hoch.
Jetzt habe ich allerdings Objekte mit vielen verschiedenen Werten und möchte vermeiden, via "-textvariable => \$test->{'counter'}" direkt auf die Instanzvariablen zuzugreifen, lieber würde ich getter und setter verwenden, z.B. "-textvariable => \$test->counter()" (2. Button bleibt bei 0 stehen).

Mir fällt aber keine Möglichkeit ein.
Habt Ihr eine Idee?

Lieben gruß
Pörl.

View full thread [Tk] -textvariable an subroutine binden