classification
Title: Turtle window pops under the terminal on OSX
Type: behavior Stage: resolved
Components: Library (Lib), Macintosh Versions: Python 3.5, Python 3.4
process
Status: closed Resolution: fixed
Dependencies: 9384 Superseder:
Assigned To: Nosy List: James.Cook, Marc.Abramowitz, belopolsky, ned.deily, python-dev, rhettinger, ronaldoussoren
Priority: normal Keywords: patch

Created on 2011-03-16 14:57 by belopolsky, last changed 2014-04-20 02:19 by ned.deily. This issue is now closed.

Files
File name Uploaded Description Edit
issue-11571.txt ronaldoussoren, 2011-03-16 15:26 review
issue11571.patch ned.deily, 2011-04-04 06:39 review
Messages (14)
msg131124 - (view) Author: Alexander Belopolsky (belopolsky) * (Python committer) Date: 2011-03-16 14:57
If you have a large enough terminal window and run

$ python -m turtle

on OSX, you will see nothing because turtle screen pops under the terminal.

Ned Deily suggested in msg130421 that this can be fixed by setting "-topmost" WM attribute on the root window.  However, if you apply the following patch:

diff -r 71b182134853 Lib/turtle.py
--- a/Lib/turtle.py	Wed Mar 16 09:44:26 2011 -0400
+++ b/Lib/turtle.py	Wed Mar 16 10:49:22 2011 -0400
@@ -993,6 +993,7 @@
         self._colormode = _CFG["colormode"]
         self._keys = []
         self.clear()
+        cv._rootwindow.call('wm', 'attributes', '.', '-topmost', '1')
 
     def clear(self):
         """Delete all drawings and all turtles from the TurtleScreen.

The result is that turtle window stays on top even if you shift focus back to the terminal.

The correct behavior would be for the turtle screen to pop on top, ideally without receiving the focus, but allow users to obscure it with another window if they wish.
msg131128 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2011-03-16 15:26
The attached patch forces the window to the front by first making the window a topmost window and then resetting that flag.

Could you test if this does want you'd like it to?

(The patch is for 3.3, will backport upto 2.7 when the behavior is correct)
msg131133 - (view) Author: Alexander Belopolsky (belopolsky) * (Python committer) Date: 2011-03-16 15:58
On Wed, Mar 16, 2011 at 11:26 AM, Ronald Oussoren
<report@bugs.python.org> wrote:
..
> The attached patch forces the window to the front by first making the window
> a topmost window and then resetting that flag.
>
> Could you test if this does want you'd like it to?

Yes, this works.  Nice trick - did not think of it.

I don't use idle, but someone should test that this works when turtle
is used by idle.  It works fine when I start idle from command line
(in which case idle itself pops under the terminal), but I understand
that most users start idle from Finder or the Dock and I don't have
that set up.

A nit-pick: in the current turtle code module imports and from module
imports are visually separated.   Consider moving "import sys" below
"import inspect".
msg132918 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2011-04-04 06:39
Looks good to me.  I tested on OS X with both Tk 8.5 on 10.6 and Tk 8.4 on 10.5.  The demo runs fine under IDLE.app and bin/idle3.  If no objections, I'll commit the patch with the nit addressed.
msg133215 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2011-04-07 13:09
+1 on applying the patch. 

I can do so on Sunday but feel to apply the patch before that.
msg133234 - (view) Author: Alexander Belopolsky (belopolsky) * (Python committer) Date: 2011-04-07 17:03
While you are at it, can you also fix the same issue with "python -m tkinter"?
msg133235 - (view) Author: Alexander Belopolsky (belopolsky) * (Python committer) Date: 2011-04-07 17:04
.. and "python -m turtledemo"?
msg133302 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2011-04-08 10:13
On 07 Apr, 2011,at 07:03 PM, Alexander Belopolsky <report@bugs.python.org> wrote:

Alexander Belopolsky <belopolsky@users.sourceforge.net> added the comment:

While you are at it, can you also fix the same issue with "python -m tkinter"?
 
Sure, I can add a hack to that module as well.

Ronald
msg161145 - (view) Author: Marc Abramowitz (Marc.Abramowitz) * Date: 2012-05-19 18:24
I wonder if this could be applied at some lower level in TkInter, because this bug happens with every Tk app -- e.g.: turtle, idle, web2py
msg161146 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-05-19 18:37
Marc, it could although that would be a change in behavior that possibly might not be desired by all tkinter apps. Perhaps the thing to do is add an optional "topmost" argument to tkinter.Tk() with the default value being True.
msg192523 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2013-07-07 08:27
I'm revisiting some old issues, and while I don't mind adding workarounds to the various scripts I do not consider this to be a bug. This is unexpected behavior from the platform, and only affects running scripts from the command-line (bundling the script in an app bundle would result in a window that pops up in front when the app is launched).

I'm unassigning the issue because I'm no longer interested in working on this.
msg204261 - (view) Author: James Cook (James.Cook) Date: 2013-11-24 19:39
This problem still exists with the version of turtle bundled with python 3.3.3 and ActiveState ActiveTcl8.5.15.1.  While it may be an issue with the underlying platform, it's unfortunate for young beginners just learning python who don't understand the underlying issue.

If other parents are searching for a solution, this works:

turtle.getscreen()._root.attributes('-topmost', 1)
turtle.getscreen()._root.attributes('-topmost', 0)

Any chance the workaround patch could be applied so I don't have to tell my kid to add this magic to his scripts?
msg216890 - (view) Author: Roundup Robot (python-dev) Date: 2014-04-20 02:15
New changeset 1f3946b22e64 by Ned Deily in branch '3.4':
Issue #11571: Ensure that the turtle window becomes the topmost window
http://hg.python.org/cpython/rev/1f3946b22e64

New changeset 01228d7b5e01 by Ned Deily in branch 'default':
Issue #11571: merge with 3.4
http://hg.python.org/cpython/rev/01228d7b5e01
msg216891 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2014-04-20 02:19
The fix for turtle has been applied for release in 3.4.1 and 3.5.0.
History
Date User Action Args
2014-04-20 02:19:55ned.deilysetversions: + Python 3.4, Python 3.5, - Python 2.7, Python 3.2, Python 3.3
2014-04-20 02:19:43ned.deilysetresolution: wont fix -> fixed
messages: + msg216891
stage: commit review -> resolved
2014-04-20 02:15:34python-devsetnosy: + python-dev
messages: + msg216890
2013-11-24 19:39:39James.Cooksetnosy: + James.Cook
messages: + msg204261
2013-07-31 22:51:26belopolskysetstatus: open -> closed
resolution: wont fix
2013-07-07 08:27:46ronaldoussorensetassignee: ronaldoussoren ->
messages: + msg192523
2012-05-19 18:37:40ned.deilysetmessages: + msg161146
2012-05-19 18:28:22ned.deilysetfiles: - unnamed
2012-05-19 18:24:42Marc.Abramowitzsetnosy: + Marc.Abramowitz
messages: + msg161145
2012-05-19 17:01:02ned.deilylinkissue14859 superseder
2011-04-08 10:13:53ronaldoussorensetfiles: + unnamed

messages: + msg133302
2011-04-07 17:16:03rhettingersetnosy: + rhettinger
2011-04-07 17:04:48belopolskysetmessages: + msg133235
2011-04-07 17:03:46belopolskysetmessages: + msg133234
2011-04-07 13:09:48ronaldoussorensetmessages: + msg133215
2011-04-04 06:39:23ned.deilysetfiles: + issue11571.patch
versions: + Python 2.7, Python 3.2
messages: + msg132918

keywords: + patch
stage: commit review
2011-03-16 15:58:53belopolskysetmessages: + msg131133
2011-03-16 15:26:52ronaldoussorensetfiles: + issue-11571.txt

messages: + msg131128
2011-03-16 15:01:16belopolskylinkissue9384 superseder
2011-03-16 14:58:04belopolskysetdependencies: + Tkinter windows pop under the terminal in OSX
2011-03-16 14:57:30belopolskycreate