How to debug an unfired tkinter event?

jfong at ms4.hinet.net jfong at ms4.hinet.net
Thu Oct 19 05:07:53 EDT 2017


Peter Otten at 2017-10-19 UTC+8 PM 3:24:30 wrote:
> It's not clear to me what you mean with this. Did you place the table from 
> the recipe elsewhere inside a window that you created or did you make 
> changes in the recipe's code?

Thank you, Peter. I am using Python 3.4.4 under WinXP. 

When running the file directly from download, I get a table scrolling vertically only. If its Table class's __init__ parameter "scroll_horizontally" changed to True, it can be scrolled horizontally also. But there is a problem when scrolled horizontally, the header field will not align with data field anymore. I make some modifications to make it does. So far so good.

Later, I want to make the table also has a vertical header. The first step I had taken was to move all 2nd top-level widgets(not much, just four) to right one column further to make room for this new widget. I though it's a simple work, just increase their grid column value by 1. But Murphy's Law comes, the xscrollbar even don't show up when the table was squeezed horizontally.

> > The canvas has a binding:
> >         self.canvas.bind('<Configure>', self._on_canvas_configure)
> > 
> > After this movement, the callback was only triggered when dragging the
> > root widget to resize canvas vertically, but not horizontally.
> > 
> > Event seems has OS involved(it's MS Windows XP in my case). How to debug
> > this kind of problem, under pdb?
> 
> I don't know, but if you can post a small example script that demonstrates 
> the problem, and you are lucky, someone will see the problem.

This is a ~5xx lines file and I think it's not fare to ask forum members to look through it. So I decide to ask for help on how to debug it, instead of the solution.

I try to change the binding to
         self.bind_all('<Configure>', self._on_canvas_configure)
and add a line into the callback
         print(event.widget)

I got some info below each time when I squeeze the table:
.
.50077776
.50077776.50712528
.50077776.50712496
.50077776.50712464
.50077776.50712144
.50077776.50712528.50712560.50782256
.50077776.50712528.50712560.50782256.50783024
.50077776.50712528.50712560.50782256
.50077776.50712528.50712560.50782256.50783024

How to change these number(is it a widget ID?) to a meaning name?

--Jach



More information about the Python-list mailing list