Qt4 backend question

Hey there,

In the application I'm building, I'm using Python 2.5 to place a toolbar
from Matplotlib in a Qt 4 environment. Now I'd like to modify the
toolbar to suit our needs. So, I've done the following:

from PyQt4 import QtGui
from matplotlib.backends.backend_qt4 import NavigationToolbar2QT
from matplotlib.backend_bases import NavigationToolbar2

class Toolbar(NavigationToolbar2QT) :
  def __init__(self , parent , canvas, coordinates=True) :
    self.canvas = canvas
    self.coordinates = coordinates
    QtGui.QWidget.__init__( self, parent )
    NavigationToolbar2.__init__( self, canvas )

I'd like to delete the configure subplots button, and add a new button in
it's place. However, I can't seem to find the configure subplots button, as
it is not listed in its method/object list. So, I had to use this crude

    pushButtonCounter = -1
    for child in self.children():
      if str( type(child) ) == "<class 'PyQt4.QtGui.QToolButton'>":
        pushButtonCounter += 1
        if pushButtonCounter == 6:
          configuresubplots_button = child

Also, Python 2.5 crashes when trying to do certain things with the button:

    configuresubplots_button.deleteLater() # Crashes
    # Ugh, I forgot what other kinds of operations make Python crash... I
think trying to connect and disconnect functions didn't go right... not
sure though.

These things, however, do work (or at least don't make Python crash):

    configuresubplots_button.setEnabled(False) # Works
    configuresubplots_button.setHidden(True) # Does not work, but doesn't
cause a crash, either.
    configuresubplots_button.setIcon(QtGui.QIcon('newicon.PNG')) # Works
    configuresubplots_button.setToolTip('Another tool tip') # Works
    configuresubplots_button.connect(child, QtCore.SIGNAL('clicked()'),
self.new_fuction) # Works, though this should only be done after you
instantiate this class in your GUI. So, you have to loop again to find the
button to connect it.

So, in the end, I managed to change the configure_subplots button into the
button I want. However, such a method should not be necessary.
The question is whether I was doing something wrong, and if so, how I could
have done this differently?

My sincere thanks for your time and efforts!




View this message in context: http://www.nabble.com/Qt4-backend-question-tp24110367p24110367.html
Sent from the matplotlib - users mailing list archive at Nabble.com.