[PyKDE] KTrader woes?

Jim Bublitz jbublitz at nwinternet.com
Thu Sep 11 04:30:01 BST 2003

On Wednesday September 10 2003 17:45, Sundance wrote:
> I heard Jim Bublitz said:

> I assume that it is not expected to work outside a
> KApplication, then? Maybe there should be a way to raise an
> exception rather than crash when this is called outside a
> KApplication...? 

You'd have to talk to KDE and TrollTech about that - that's 
built-in behaviour in the KDE/Qt C++ libs. Some things do throw 
an exception/error msgs, like trying to use widgets without a 
QApplication/KApplication instance exisiting (although the msg 
usually complains about a missing QPainter instance). I would 
imagine KTrader is looking for some other connection the 
KApplication establishes with KDE.

> That was the behavior I expected anyway, so
> when I tried the KTrader trick on its own I assumed that it
> would either 1) work on its own, or 2) require some
> QApplication-like class to have been instanciated, in which
> case it would warn me.

> Guess I was wrong about the 'warn me' part.

Nah - you got a segfault. Just not a very delicate warning. :)

> > There are a couple of programs in examples/ that use KTrader
> > (pyParts.py, pyParts_1.py don't work too well at the moment
> > though). If you run examples/mimetype.py, the OfferList tab
> > results are from a KTrader call -- does that work?

> It does.
> I rewrote my little example above adding a KApplication
> instanciation just before the call to KTrader.self().query,
> and it works, whee!

> Well, more precisely, it works if I copy the KCmdLineArgs.init
> line from mimetype.py. If I call KApplication([], "SomeName")
> it dies. Apparently KApplication REQUIRES a non-empty list as
> its first argument, unlike QApplication (with which the []
> trick works).

PyKDE-3.8 (rc releases are at 
http://www.sourceforge.net/projects/pykde) has a bunch of 
application templates you can use to get started.

> Alright, so. Erm. :) I may be wrong about this as well, but I
> still sort of think there are more elegant ways to let the
> user know he's done something wrong than crash the full
> interpreter. =)

> Is there any way we can help make it so?

Seems pretty difficult - my guess would be the most appropriate 
route would be a tutorial/better docs/more example programs - 
that's in the works, but takes a while to accomplish. The KDE 
libs classref docs are pretty good, even if C++ oriented. You 
find them at http://www.kde.org in the documentation section, 
along with a lot of tutorial stuff.


More information about the PyQt mailing list