On 9/17/2014 9:34 PM, Seymore4Head wrote:
On Wed, 17 Sep 2014 18:56:47 -0400, Terry Reedy <tjre...@udel.edu>

A little digging with Idle's grep (Find in Files) shows that the message
is produced by this code in idlelib/PyShell.py, about 825.

     def display_executing_dialog(self):
         tkMessageBox.showerror(
             "Already executing",
             "The Python Shell window is already executing a command; "
             "please wait until it is finished.",
             master=self.tkconsole.text)

This function is only called here (about line 735)
     def runcommand(self, code):
         "Run the code without invoking the debugger"
         # The code better not raise an exception!
         if self.tkconsole.executing:
             self.display_executing_dialog()
         <else run idle code in user process output view user>

How is this run?  Run-Module F5 invokes
ScriptBinding.run_module_event(116) and thence _run_module_event (129).
This methods includes this.
         if PyShell.use_subprocess:
             interp.restart_subprocess(with_cwd=False)

restart_subprocess includes these lines (starting at 470):
         # Kill subprocess, spawn a new one, accept connection.
         self.rpcclt.close()
         self.terminate_subprocess()
         console = self.tkconsole
         ...
         console.executing = False  # == self.tkconsole
         ...
         self.transfer_path(with_cwd=with_cwd)

transfer_path calls runcommand but only after tkconsole.executing has
been set to False.  But this only happens if PyShell.use_subprocess is
True, which it normally is, but not if one starts Idle with the -n option.

After conditionally calling interp.restart_subprocess, _run_module_event
directly calls interp.runcommand, which can fail when running with -n.
Are you?  This is the only way I know to get the error message.  Is so,
the second way to not get the error message is to not use -n and run
normally.

Sorry.  I don't speak python yet.  Quite a few of the above terms are
new to me.

It may be that was trying to run the program again before the current
one was finished.  In the past I was getting the error when I was
(almost) sure the program had finished.  I will be more careful in the
future, but I will also keep an eye out for the problem to repeat.
I just tried to run the above program again and gave it more time to
finish and I did not get the error, so it could well be I was jumping
the gun.

My question was "How do you start Idle?"
(I can make a difference.)

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to