$table = $middle_f->Scrolled(..., -browsecommand => \&select_change, -selcmd=> sub { return if ($is_new_row != 1); $is_new_row = 0; $table->tagRow('impair_row' ,$selected_row_number) if ($selected_row_number != -1); $table->tagRow(undef ,$prev_selected_row_number) if (defined $prev_selected_row_number && $prev_selected_row_number != -1 && $prev_selected_row_number != $selected_row_number); }); #marker tag for selected row $table->tagConfigure( 'impair_row', -bg => 'gray90', -fg => 'black', -relief => 'sunken', -state => 'disabled' ); sub select_change { my ($old_cell, $new_cell) = @_; $new_cell =~/(\d+),/; $selected_row_number = $1; $old_cell =~/(\d+),/; $prev_selected_row_number = $1; $is_new_row = 1; }