Kryptxy via Python-list wrote: > Sent with [ProtonMail](https://protonmail.com) Secure Email. > >> -------- Original Message -------- >> Subject: Re: Running a GUI program haults the calling program (linux) >> Local Time: 26 September 2017 12:09 PM >> UTC Time: 26 September 2017 06:39 >> From: c...@cskk.id.au >> To: Kryptxy <kryp...@protonmail.com> >> python-list <python-list@python.org> >> >> On 25Sep2017 20:38, Kryptxy <kryp...@protonmail.com> wrote: >>>I want to run a GUI program (transmission-gtk) from python. This is what >>>I do: >>> >>>import subprocess >>>subprocess.Popen(["transmission-gtk", link], stdout=subprocess.PIPE, >>>stderr=subprocess.PIPE) >>> >>>Where `link` is some magnetic link. >>> >>>This command opens transmission-gtk, but it haults the calling program, >>>and keeps the terminal busy till the time GUI is running. As soon as GUI >>>is closed, the control goes back to the program. >> >> I do not believe this is all your code. Please post a _complete_ example. >> >> Popen dispatches a process. It does not wait for it to terminate. GUI >> programs are not special. Therefore, if your calling python program is >> blocking, it is blocking somewhere other that this line of code. Please >> show us where. >> >> Consider putting print() calls through your code to locate where your >> program stalls. >> >> Cheers, >> Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au) > > Here - > > p = subprocess.Popen(['transmission-gtk', link], stdout=subprocess.PIPE, > stderr=subprocess.PIPE) > output, error = p.communicate()
That's the problem. communicate() *must* block to collect the program's entire output. You get what you ask for... > error = error.decode('utf-8') > output = output.decode('utf-8') > if error != '': > print("\nUnable to load torrent.") > else: > print("Torrent added successfully!") > > Here, transmission-gtk is opened and the program haults (at > subprocess.Popen() statement). When I close the GUI window, I get the > message "Unable to load torrent". > > Error message I get: > `Unable to parse nameserver address 8.8.8.8,` > `(transmission-gtk:3982): GLib-CRITICAL **: g_file_test: assertion > 'filename != NULL' failed` -- https://mail.python.org/mailman/listinfo/python-list