Wx.Grid and popup over cells

Mike Driscoll kyosohma at gmail.com
Tue Oct 14 10:13:50 EDT 2008


On Oct 14, 5:21 am, Massi <massi_... at msn.com> wrote:
> Hi everyone,
>
> I'm writing a python script which uses a grid (PyGridTableBase) whose
> cells can contain very large values (not only numbers, but also
> strings). I've also written a custom renderer which dinamically shows
> only the first n characters (according to the width of the cell)
> replacing the last ones with dots. Now I would like to know if it is
> possible to have a popup which shows the whole contents of a certain
> cell when the mouse stops over the cell itself. Any ideas?
> Thanks in advance.
>
> Massi

First off, let me recommend the wxPython mailing list for questions of
this sort. You'll probably get more relevant help quicker if you go
that route.

Anyway, I've done tooltips on cells in a grid before and you'll need
the same concept to use a pop-up dialog too. To begin, you'll want to
bind to the mouse event, EVT_MOTION, like this:

self.myGrid.GetGridWindow().Bind(wx.EVT_MOTION, self.onMouseOver)

Next, you'll need to do something like the following in your mouse
over function:

<code>

def onMouseOver(self, event):
        '''
        Method to calculate where the mouse is pointing and
        then set the tooltip dynamically.
        '''

        # Use CalcUnscrolledPosition() to get the mouse position
within the
        # entire grid including what's offscreen
        x, y =
self.totals_sheet.CalcUnscrolledPosition(event.GetX(),event.GetY())

        coords = self.totals_sheet.XYToCell(x, y)
        # you only need these if you need the value in the cell
        row = coords[0]
        col = coords[1]
        event.GetEventObject().SetToolTipString("My amazing tooltip")

</code>

Hopefully that will get you going. If not, just ask more questions
(here or at the wxPython list).

-------------------
Mike Driscoll

Blog:   http://blog.pythonlibrary.org
Python Extension Building Network:     http://www.pythonlibrary.org



More information about the Python-list mailing list