Q&A: QProcess.start() is deprecated, what are the alternatives?

Update how you launch subprocesses with arguments

A reader wrote in with an interesting problem when trying to launch an external script using QProcess.

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.

Deprecated members for QProcess 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.

python
p = QProcess()
p.start("python dummy_script.py")
python
p = QProcess()
p.setProgram("python")
p.setArguments(['dummy_script.py'])
p.start()

The book has been updated with this new style API.

Create GUI Applications with Python & Qt5 by Martin Fitzpatrick — (PySide2 Edition) The hands-on guide to making apps with Python — Over 10,000 copies sold!

More info Get the book

Mark As Complete
Martin Fitzpatrick

Q&A: QProcess.start() is deprecated, what are the alternatives? was written by Martin Fitzpatrick .

Martin Fitzpatrick has been developing Python/Qt apps for 8 years. Building desktop applications to make data-analysis tools more user-friendly, Python was the obvious choice. Starting with Tk, later moving to wxWidgets and finally adopting PyQt. Martin founded PythonGUIs to provide easy to follow GUI programming tutorials to the Python community. He has written a number of popular Python books on the subject.