[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: Re: [PyKDE] callback not being called
From: David Boddie <david () boddie ! org ! uk>
Date: 2007-01-22 22:27:24
Message-ID: 200701222327.24466.david () boddie ! org ! uk
[Download RAW message or body]
On Monday 22 January 2007 03:43, Tony Cappellini wrote:
> Well, the QT docs are all in C++, and often there are some differences for
> python.
> I've spent a lot of time reading the pyQT docs here, but it's very terse,
> and don't show any examples.
Yes, they could do to be improved. The examples in the PyQt source
distribution are ported from the C++ ones, so the documentation can be
read alongside their source code, but I'll admit that it's not ideal.
> http://www.riverbankcomputing.com/Docs/PyQt4/pyqt4ref.html#pyqt-slots-and-q
>t-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)
I think this page has been around for so long, in many different versions of
PyQt, that many long-time users have just memorized it. :-/
> 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)
>
> tried this, it still doesn't call my function
My mistake, sorry! You need the following:
self.connect(self.patchNames, QtCore.SIGNAL("activated(const QString &)"),
self.updateTextBox)
The signal is the one shown here:
http://www.riverbankcomputing.com/Docs/PyQt4/html/qcombobox.html#activated-2
Does this help at all?
> > 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()"))
>
> tried this to, it doens't call my function either
I made the same mistake twice, thanks to cut-and-paste. :-(
> > It's quite common that people forget to provide the full signature (with
> > C++ types, but without argument names) to the SIGNAL() and SLOT()
> > functions. It would be interesting to know whether it seems like a
> > strange convention to people who have never used Qt with C++, or whether
> > it catches everyone out at some point.
I think I proved my own point. :-)
> I haven't had enough time with pyqt4 to forget anything.:-)
>
> I'm just trying out pyQT4, but dabbled with version 3 a few years ago.
> A lot has changed, but the signals and slots have basically stayed the
> same, from what I can see.
>
> The problem is trying to find python examples instead of C++ is the
> shortcoming. The python tutorial examples of the shooter game do a lot of
> the same thing, and dont use many widgets.
Do you miss Python-specific documentation or just example code to look at?
There's not a great deal that can be done right now when it comes to the
code shown in the API and example documentation, but the C++ examples
themselves can be ported to Python, and maybe they could be documented on
the PyQt Wiki. See this page for a list of those we ported for Qt 4.0 and
Qt 4.2:
http://www.diotavelli.net/PyQtWiki/PyQt4Examples
In the future, it would be good to actually document them on the Wiki as
well as just list the ones we manage to port.
David
_______________________________________________
PyKDE mailing list PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic