A reader wrote in with an interesting problem when trying to launch an external script using
When trying to launch another script in a sub-process I got the error:
QProcess.start(const QString & command, QFlags<QIODevice::OpenModeFlag> mode)is deprecated. Having checked the documentation it mentioned
.start()was obsolete but did not suggest replacement. Do you have any suggestions.
The confusion here comes from the
.start() method being overloaded -- it can be called with different signatures (collections of arguments). The
.start() method itself is not removed or deprecated, just the signature where
.start() is called with a string containing the program and arguments together.
List of deprecated methods for QProcess: note that only this signature for .start is deprecated
In the new API you need to instead set the program and arguments separately, with the latter passed as a list of strings -- one item per argument. This is a nicer way to do this -- less prone to errors since it's explicit what each thing you're passing actually is.
p = QProcess() p.start("python dummy_script.py")
p = QProcess() p.setProgram("python") p.setArguments(['dummy_script.py']) p.start()
The book has been updated with this new style API.