Latest posts on Почему возникает ошибка после редактирования ячейки сетки? topichttps://python.su/forum/topic/38005/2019-11-12T10:28:23+02:00Общий :: GUI :: Почему возникает ошибка после редактирования ячейки сетки?
2019-11-12T10:28:23+02:00ioprst205414Table:<br/><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">StateTable</span><span class="p">(</span><span class="n">CustomTable</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">_updateColAttrs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">grid</span><span class="p">):</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">()):</span>
<span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetNumberCols</span><span class="p">()):</span>
<span class="n">editor</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">colname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetColLabelValue</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
<span class="k">if</span> <span class="n">col</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetReadOnly</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
<span class="k">if</span> <span class="n">colname</span> <span class="o">==</span> <span class="s1">'Code'</span><span class="p">:</span>
<span class="n">editor</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellNumberEditor</span><span class="p">()</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellNumberRenderer</span><span class="p">()</span>
<span class="o">...</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetReadOnly</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
<span class="c1"># !!!!!! DECISION !!!!!!</span>
<span class="n">currentEditor</span> <span class="o">=</span> <span class="n">grid</span><span class="o">.</span><span class="n">GetCellEditor</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span>
<span class="n">currentEditor</span><span class="o">.</span><span class="n">DecRef</span><span class="p">()</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetCellEditor</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">editor</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetCellRenderer</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">renderer</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ResizeRow</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">row</span><span class="p">)</span>
</pre></div><br/>Grid:<br/><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">StatePanel</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">states</span><span class="p">):</span>
<span class="o">...</span>
<span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="n">CustomGrid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">120</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_WINDOW_DESTROY</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnGridDestroy</span><span class="p">)</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">OnGridDestroy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">_updateColAttrs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">)</span>
<span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
</pre></div>
Общий :: GUI :: Почему возникает ошибка после редактирования ячейки сетки?
2019-11-06T09:29:37+02:00ioprst205325Есть диалог, на котором есть панель, на которой есть сетка.<br/><br/>Каждому столбцу сетки назначается собственный редактор (в методе класса, производном от GridTableBase)<br/><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">StatePanel</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">states</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
<span class="n">topsizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">FlexGridSizer</span><span class="p">(</span><span class="n">rows</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cols</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">vgap</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">hgap</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">grid</span> <span class="o">=</span> <span class="n">CustomGrid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">100</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">EVT_GRID_CELL_CHANGED</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OnGridCellChange</span><span class="p">)</span>
<span class="n">topsizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">,</span> <span class="n">proportion</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">flag</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">topsizer</span><span class="p">)</span>
<span class="n">defaultValue</span> <span class="o">=</span> <span class="n">_StateInfos</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'0'</span><span class="p">,</span> <span class="s1">'Состояние 0'</span><span class="p">,</span> <span class="n">YELLOW</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">states</span> <span class="o">=</span> <span class="n">states</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">states</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">defaultValue</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">table</span> <span class="o">=</span> <span class="n">StateTable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">states</span><span class="p">,</span> <span class="n">GetStateTableColnames</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">RefreshStates</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">RefreshStates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">num</span><span class="p">,</span> <span class="n">state</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">states</span><span class="p">):</span>
<span class="n">state</span><span class="o">.</span><span class="n">Number</span> <span class="o">=</span> <span class="n">num</span> <span class="o">+</span> <span class="mi">1</span>
<span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">SetData</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">ResetView</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">grid</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">OnGridCellChange</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
<span class="n">row</span><span class="p">,</span> <span class="n">col</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetRow</span><span class="p">(),</span> <span class="n">event</span><span class="o">.</span><span class="n">GetCol</span><span class="p">()</span>
<span class="n">colname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">GetColLabelValue</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">GetValue</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span>
<span class="n">message</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">if</span> <span class="n">colname</span> <span class="o">==</span> <span class="s1">'Code'</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
<span class="n">message</span> <span class="o">=</span> <span class="s1">'Значение кода не может быть пустым.'</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">()):</span>
<span class="k">if</span> <span class="n">r</span> <span class="o">!=</span> <span class="n">row</span><span class="p">:</span>
<span class="n">code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table</span><span class="o">.</span><span class="n">GetValueByName</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s1">'Code'</span><span class="p">)</span>
<span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="n">code</span><span class="p">:</span>
<span class="n">message</span> <span class="o">=</span> <span class="n">f</span><span class="s1">'Код {value} уже используется.'</span>
<span class="k">break</span>
<span class="k">if</span> <span class="n">message</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">wx</span><span class="o">.</span><span class="n">CallAfter</span><span class="p">(</span><span class="n">showErrorMessage</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
<span class="n">event</span><span class="o">.</span><span class="n">Veto</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
</pre></div><br/>В self.table.ResetView вызывается метод StateTable.ResetView<br/><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">StateTable</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridTableBase</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">ResetView</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">grid</span><span class="p">):</span>
<span class="sd">"""</span>
<span class="sd"> (wx.grid.Grid) -> Reset the grid view. Call this to</span>
<span class="sd"> update the grid if rows and columns have been added or deleted</span>
<span class="sd"> """</span>
<span class="n">grid</span><span class="o">.</span><span class="n">CloseEditControl</span><span class="p">()</span>
<span class="n">grid</span><span class="o">.</span><span class="n">BeginBatch</span><span class="p">()</span>
<span class="k">for</span> <span class="n">current</span><span class="p">,</span> <span class="n">new</span><span class="p">,</span> <span class="n">delmsg</span><span class="p">,</span> <span class="n">addmsg</span> <span class="ow">in</span> <span class="p">[</span>
<span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_rows</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">(),</span>
<span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GRIDTABLE_NOTIFY_ROWS_DELETED</span><span class="p">,</span>
<span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GRIDTABLE_NOTIFY_ROWS_APPENDED</span>
<span class="p">),</span>
<span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cols</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">GetNumberCols</span><span class="p">(),</span>
<span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GRIDTABLE_NOTIFY_COLS_DELETED</span><span class="p">,</span>
<span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GRIDTABLE_NOTIFY_COLS_APPENDED</span>
<span class="p">)</span>
<span class="p">]:</span>
<span class="k">if</span> <span class="n">new</span> <span class="o"><</span> <span class="n">current</span><span class="p">:</span>
<span class="n">msg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridTableMessage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delmsg</span><span class="p">,</span> <span class="n">new</span><span class="p">,</span> <span class="n">current</span><span class="o">-</span><span class="n">new</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">ProcessTableMessage</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">new</span> <span class="o">></span> <span class="n">current</span><span class="p">:</span>
<span class="n">msg</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridTableMessage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addmsg</span><span class="p">,</span> <span class="n">new</span><span class="o">-</span><span class="n">current</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">ProcessTableMessage</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">UpdateValues</span><span class="p">(</span><span class="n">grid</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">EndBatch</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetNumberCols</span><span class="p">()</span>
<span class="c1"># update the column rendering scheme</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_updateColAttrs</span><span class="p">(</span><span class="n">grid</span><span class="p">)</span>
<span class="c1"># update the scrollbars and the displayed part of the grid</span>
<span class="n">grid</span><span class="o">.</span><span class="n">AdjustScrollbars</span><span class="p">()</span>
<span class="n">grid</span><span class="o">.</span><span class="n">ForceRefresh</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_updateColAttrs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">grid</span><span class="p">):</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetNumberRows</span><span class="p">()):</span>
<span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">GetNumberCols</span><span class="p">()):</span>
<span class="n">editor</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">colname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetColLabelValue</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
<span class="k">if</span> <span class="n">col</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetReadOnly</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
<span class="k">if</span> <span class="n">colname</span> <span class="o">==</span> <span class="s1">'Code'</span><span class="p">:</span>
<span class="n">editor</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellNumberEditor</span><span class="p">()</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellNumberRenderer</span><span class="p">()</span>
<span class="k">elif</span> <span class="n">colname</span> <span class="o">==</span> <span class="s1">'Text'</span><span class="p">:</span>
<span class="n">editor</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellTextEditor</span><span class="p">()</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">grid</span><span class="o">.</span><span class="n">GridCellStringRenderer</span><span class="p">()</span>
<span class="k">elif</span> <span class="n">colname</span> <span class="o">==</span> <span class="s1">'Text colour'</span><span class="p">:</span>
<span class="n">editor</span> <span class="o">=</span> <span class="n">GridCellColourEditor</span><span class="p">()</span>
<span class="n">renderer</span> <span class="o">=</span> <span class="n">GridCellColourRenderer</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetReadOnly</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="bp">True</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetCellEditor</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">editor</span><span class="p">)</span>
<span class="n">grid</span><span class="o">.</span><span class="n">SetCellRenderer</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">renderer</span><span class="p">)</span>
</pre></div><br/>Если я редактирую любую ячейку и закрываю диалоговое окно, возникает ошибка<br/><br/><div class="code"><pre> <span class="n">wx</span><span class="o">.</span><span class="n">_core</span><span class="o">.</span><span class="n">wxAssertionError</span><span class="p">:</span> <span class="n">C</span><span class="o">++</span> <span class="n">assertion</span> <span class="s2">"GetEventHandler() == this"</span> <span class="n">failed</span> <span class="n">at</span> <span class="o">..</span>\<span class="o">..</span>\<span class="n">src</span>\<span class="n">common</span>\<span class="n">wincmn</span><span class="o">.</span><span class="n">cpp</span><span class="p">(</span><span class="mi">478</span><span class="p">)</span> <span class="ow">in</span> <span class="n">wxWindowBase</span><span class="p">::</span><span class="o">~</span><span class="n">wxWindowBase</span><span class="p">():</span> <span class="nb">any</span> <span class="n">pushed</span> <span class="n">event</span> <span class="n">handlers</span> <span class="n">must</span> <span class="n">have</span> <span class="n">been</span> <span class="n">removed</span>
<span class="n">The</span> <span class="n">above</span> <span class="n">exception</span> <span class="n">was</span> <span class="n">the</span> <span class="n">direct</span> <span class="n">cause</span> <span class="n">of</span> <span class="n">the</span> <span class="n">following</span> <span class="n">exception</span><span class="p">:</span>
<span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
<span class="n">File</span> <span class="s2">"C:\Python37-32\lib\site-packages\wx\lib</span><span class="se">\a</span><span class="s2">gw\customtreectrl.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">8183</span><span class="p">,</span> <span class="ow">in</span> <span class="n">OnInternalIdle</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">HasAGWFlag</span><span class="p">(</span><span class="n">TR_MULTIPLE</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">():</span>
<span class="n">File</span> <span class="s2">"C:\Python37-32\lib\site-packages\wx\lib</span><span class="se">\a</span><span class="s2">gw\customtreectrl.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">3534</span><span class="p">,</span> <span class="ow">in</span> <span class="n">HasAGWFlag</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_agwStyle</span> <span class="o">&</span> <span class="n">flag</span><span class="p">)</span>
<span class="ne">SystemError</span><span class="p">:</span> <span class="o"><</span><span class="k">class</span> <span class="err">'</span><span class="nc">bool</span><span class="s1">'> returned a result with an error set</span>
</pre></div><br/>Я видел тему: <a href="https://github.com/wxWidgets/Phoenix/issues/627">https://github.com/wxWidgets/Phoenix/issues/627</a> <br/><br/>Сделал все как предложено в решении, но это не решает проблему.<br/><br/>Проблема решается, только если в методе OnGridCellChange в конце вызывается self.table._updateColAttrs (self.grid). Почему?