hoanglearning has asked for the wisdom of the Perl Monks concerning the following question:

I would like to be able to read the background color assigned to individual cells in Tkx table but dont know how to code it. I have been trying the cget command but could not make it works. Please help. Thanks so much in advance </>

use strict; use warnings; use Tkx; Tkx::package_require("Tktable"); my %hash =(); my $table; my $mw = Tkx::widget->new("."); %hash = ( # data to display '0,0' => 'Goodby', '1,1' => 'cruel', '2,2' => 'world', ); $table = $mw->new_table ( -rows => 3, -cols => 3, -bg => "white", -width => 6, -height => 6, -cache => 1, -variable => \%hash, ); $table->g_pack(-fill => 'both', -expand => 1); ################################################ # set data and assign background color to cells ################################################ $table->tag("celltag","g",("1,1")); $table->tag("celltag","y",("2,2")); $table->tag("configure","g",-bg=>"green",-fg=>"red"); $table->tag("configure","y",-bg=>"yellow",-fg=>"red"); ################################################ # Read assigned background colors. white for theoverall #table, # green for cell (1,1) and yelow for cell (2,2) ################################################ my $table_bg = $table->cget(-bg); #this works print "table background= $table_bg\n"; ## my $cell_background = ??? - Do not know how print "Question: How to read the cell background colors?\n"; Tkx::MainLoop();

Replies are listed 'Best First'.
Re: Tkx Table - Read cell background
by Anonymous Monk on Jul 05, 2016 at 08:12 UTC

    Why not? Which docs are you reading?

    Just like "tag configure", you can use "tag cget"

      I still can not use the "tag cget" to get the background color assigned to individual cells.

      use strict; use warnings; use Tkx; Tkx::package_require("Tktable"); my %hash =(); my $table; my $mw = Tkx::widget->new("."); %hash = ( # data to display '0,0' => 'Goodby', '1,1' => 'cruel', '2,2' => 'world', ); $table = $mw->new_table ( -rows => 3, -cols => 3, -bg => "white", -width => 6, -height => 6, -cache => 1, -variable => \%hash, ); $table->g_pack(-fill => 'both', -expand => 1); ################################################ # set data and assign background color to cells ################################################ $table->tag("celltag","g",("1,1")); $table->tag("celltag","y",("2,2")); $table->tag("configure","g",-bg=>"green",-fg=>"red"); $table->tag("configure","y",-bg=>"yellow",-fg=>"red"); my $info; $info = $table->tag("cget", "g", "-background", -row? -col?); print "info=$info\n"; Tkx::MainLoop();

        Why do you need to the background, since you set the background?

        This is as close as I'm able to get  $table->tag('cget','active','-bg'), "\n";

        I thought maybe this would work as well, it does for "configure" but for cget it always returns window not found  $table->window( 'cget', "$row,$col" , "-background" )

        Seems like a bug in ActiveTcl 8.6b1.2 (current is 8.6.4.1/

        Could tag every cell with row/col but that seems like a dumb workaround, but it would probably work

      I been reading various document online from CPAN, tablematrix, table configure and cget. I have tried the followings and could not make them work.

      # $info = $table->cget(-bg, "1,1"); #for row,col=1,1 # $info = $table->cget(-tag, "1,1"); # $info = $table->cget(-celltag, "1,1"); # $table->{"row,col"}->cget("tag");
      Thanks so much for helping.