Hello monks!

I'm constructing a gui with multiple tables (managed by Grid). The largest table consists of headers (Hlist widgets) and cells (Entry widgets). Both (headers and cells) are divided onto 3 different panes. The names of these panes are 'numbers', 'fixed' and 'scrollable'.

Immediately after creating this table, I see that gridInfo() returns wrong row numbers of all Entry widgets situated in the 'numbers' and 'fixed' panes: they are beginning from 1, not 0. Numbers of all Entry widgets situated in the 'scrollable' pane are beginning, as usual, from 0. So, I have cells with different gridInfo() data in one visual row. I don't understand why. Please help...

The piece of code that constructs 'numbers', 'fixed' and 'scrollable' Entry widgets with testing print() calls:

my $data = 0; my $j = 0; my $anykey; $calls->{'call_'.raised_num()}->{'main'}{$_}{'selected'} and $anykey = + $_ for (keys %{$calls->{'call_'.raised_num()}->{'main'}}); foreach (@{$calls->{'call_'.raised_num()}->{'main'}{$anykey}{'value'}} +) { # ... $calls->{'call_'.raised_num()}->{'main_ordered'} my $pane_counter_2 = 0; if ($shown_rows > $j) { foreach my $column (@{$calls->{'call_'.raised_num()}->{'main_o +rdered'}}) { foreach my $hashname (@{$calls->{'call_'.raised_num()}->{' +main_show'}}) { if (defined ($calls->{'call_'.raised_num()}->{$hashnam +e}{$column}{'selected'}) and $calls->{'call_'.raised_num()}->{$hashna +me}{$column}{'selected'}) { if ($pane_counter_2 == 0) { $entries_numbers->[raised_num()]->[$j] = $pane +s->{'pane_fixed_'.raised_num()}->Entry( -text => $j+1, -width => 7 )->grid( -row => $rows->{'pane_fixed_'. +raised_num()}, -column => $data, -sticky => 'w' ); my @numbers_info = $entries_numbers->[raised_n +um()]->[$j]->gridInfo; print 'gridder numbers: all gridInfo:'; print $_." " foreach @numbers_info; print "\n"; $entries_numbers->[raised_num()]->[$j]->bind(" +<MouseWheel>", \&scroller); } elsif ($pane_counter_2 == 1) { $entries_fixed->[raised_num()]->[$j][$pane_cou +nter_2] = $panes->{'pane_fixed_'.raised_num()}->Entry( -text => $calls->{'call_'.rais +ed_num()}->{$hashname}{$column}{'value'}[$j], -width => 22 )->grid( -row => $rows->{'pane_fixed_'. +raised_num()}, -column => $data, -sticky => 'w' ); my @fixed_info = $entries_fixed->[raised_num() +]->[$j][$pane_counter_2]->gridInfo; print 'gridder fixed: all gridInfo:'; print $_." " foreach @fixed_info; print "\n"; $hashname_fixed->[raised_num()]->[$j][$pane_co +unter_2] = $hashname; $column_fixed->[raised_num()]->[$j][$pane_coun +ter_2] = $column; $entries_fixed->[raised_num()]->[$j][$pane_cou +nter_2]->bind("<MouseWheel>", \&scroller); } elsif ($pane_counter_2 > 1) { $entries_scrollable->[raised_num()]->[$j][$pan +e_counter_2] = $panes->{'pane_scrollable_'.raised_num()}->Entry( -text => $calls->{'call_'.rais +ed_num()}->{$hashname}{$column}{'value'}[$j], -width => 22 )->grid( -row => $rows->{'pane_scrollab +le_'.raised_num()}, -column => $data, -sticky => 'w' ); my @scrollable_info = $entries_scrollable->[ra +ised_num()]->[$j][$pane_counter_2]->gridInfo; print 'gridder scrollable: all gridInfo:'; print $_." " foreach @scrollable_info; print "\n"; $hashname_scrollable->[raised_num()]->[$j][$pa +ne_counter_2] = $hashname; $column_scrollable->[raised_num()]->[$j][$pane +_counter_2] = $column; $entries_scrollable->[raised_num()]->[$j][$pan +e_counter_2]->bind("<MouseWheel>", \&scroller); } $data ++; } } $pane_counter_2 ++; } $data = 0; $rows->{'pane_fixed_'.raised_num()} ++; $rows->{'pane_scrollable_'.raised_num()} ++; $j ++; } } $calls->{'call_'.raised_num()}->{'main_delta'} = 0;

The output in the console is:

gridder numbers: all gridInfo:-in Tk::Frame=HASH(0x1ae4e5c) -column 0 -row 1 -co lumnspan 1 -rowspan 1 -ipadx 0 -ipady 0 -padx 0 -pady 0 -sticky w
gridder fixed: all gridInfo:-in Tk::Frame=HASH(0x1ae4e5c) -column 1 -row 1 -colu mnspan 1 -rowspan 1 -ipadx 0 -ipady 0 -padx 0 -pady 0 -sticky w
gridder scrollable: all gridInfo:-in Tk::Frame=HASH(0x227e404) -column 2 -row 0 -columnspan 1 -rowspan 1 -ipadx 0 -ipady 0 -padx 0 -pady 0 -sticky w

As you see: -row 1, -row 1, -row 0.

In reply to Perl/Tk: gridInfo() returns a wrong row number by Shumkar

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.