[PyKDE] callback not being called

Tony Cappellini cappy2112 at gmail.com
Mon Jan 22 20:15:47 GMT 2007


Date: Sun, 21 Jan 2007 19:36:48 +0100
From: David Boddie <david at boddie.org.uk>
Subject: Re: [PyKDE] callback not being called
To: pykde at mats.imk.fraunhofer.de
Message-ID: < 200701211936.48640.david at boddie.org.uk>
Content-Type: text/plain;  charset="iso-8859-1"

On Sunday 21 January 2007 09:05:40 -0800, Tony Cappellini wrote:

>>Do you mean that you want to call normal methods in Python classes and not

j>>ust those supplied by their Qt base classes?
Yes

>>You should be able to use the same syntax as that used in the Qt
documentation, but there's also a PyQt-specific shortcut for slots that you
can use.
Well, the QT docs are all in C++, and often there are some differences for
python.
I've read the pyQT docs here, but it's very terse, and doesn't provide
examples.
http://www.riverbankcomputing.com/Docs/PyQt4/pyqt4ref.html#pyqt-slots-and-qt-slots
(this is the only python-specific help I can find. It's only one page)

3.5   Connecting Signals and
Slots<http://www.riverbankcomputing.com/Docs/PyQt4/pyqt4ref.html#id14>

Connections between signals and slots (and other signals) are made using the
QtCore.QObject.connect() method. For example:

QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyFunction)
QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyClass.pyMethod)
QtCore.QObject.connect(a, QtCore.SIGNAL
("QtSig()"), b, QtCore.SLOT("QtSlot()"))
QtCore.QObject.connect(a, QtCore.SIGNAL("PySig()"), b, QtCore.SLOT("QtSlot()"))
QtCore.QObject.connect(a, QtCore.SIGNAL("PySig"), pyFunction)


  def updateTextBox(self):
       # this function should be called, when the button is pressed
  self.patchBrowser.setPlainText(self.tr("Callback was called"))

>>However, your updateTextBox() slot is just a normal Python method, so you
can just pass a reference to it:

       >>self.connect(self.patchNames, QtCore.SIGNAL("activated()"),
self.updateTextBox)
I've tried this,  my function still isn't being called

>>For slots defined by the C++ base class, you can use SLOT() to specify
them in the connect() call;
>>for example, the following connection would cause the dialog to be hidden
when a patchNames combobox entry is activated:

       >>self.connect(self.patchNames, QtCore.SIGNAL("activated()"), self,
QtCore.SLOT("hide()"))
I've tried this too, it doesn't call my function either
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20070122/13f7cbd2/attachment.html


More information about the PyQt mailing list