On Friday October 31 2003 09:55, Paul Evans wrote: > Sundance sundance_at_ierne.eu.org: > >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).
> sorry if this has been fixed in newer versions than the 3.7-3 > version - I haven't been able to follow some of the discussion > on the topic (c++). I looked into this a little and: > I recently had to change one program from QApplication to > KApplication to support a kde widget and found that not only > does it require a non-empty list as Sundance noted, Yes - the list has to be non-empty. > but there > can only be One element in that list or it will fail on > 'Unexpected argument '. That's correct behavior. It simply means you haven't specified any command line options, which is done via KCmdLineArgs.addCmdLineOptions (the PyKDE version is different than the KDE version - uses a dict to pass the options as tuples). > Of course, the program still works > fine when its main class is instantiated from another script > with args. That's another possibility if you'd rather use Python to process cmd line args. Or just use Python to process the options in the same script, but before instantiating KApplication or calling KCmdLineArgs.init. > I got around it by passing [sys.argv[0]] to KApplication when > run stand-alone. This way it starts fine and the main class > can pick off the args it needs. However, the kde crash handler > kicks in when the program exits now. I don't get a segfault using sys.argv or [sys.argv [0]] or [""] (has to be a list of strings). SuSE and RH - no Mdk running at the moment; KDE 3.0.3, 3.1.0, 3.1.1. The test program doesn't do much though. > Sorry if this is fixed, I can certainly handle it for the time > being until I upgrade. If not, can you suggest a proper cure > over my work around? See previous post - there's a note in the KDE classref docs to the effect that the ctor you're trying to use (with cmd line args passed) should be removed because it "causes crashes" due to not calling KCmdLineArgs::init. I don't know if that's correct or not, but it works with as noted above. I'd recommend using the second method in my previous post - calling KCmdLineArgs.init. The next release will have a number of simple program templates, and all but one are written that way. It seems to be the way KDE wants to go in the future. It's 5 or so extra lines of code. Jim _______________________________________________ PyKDE mailing list [EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
