New Tkinter windows don't get focus on OS X

Kevin Walzer kw at codebykevin.com
Thu Sep 10 16:12:18 CEST 2009


On 9/10/09 1:27 AM, Joshua Bronson wrote:
> If you try something like:
>
> $ python -m Tkinter -c 'Tkinter._test()'
>
> in Terminal on OS X, you'll notice that the window that is spawned
> does not get focus, rather focus remains in Terminal. Furthermore, if
> you hit Command+Tab to switch focus to the Python process, you'll
> notice that for some reason Python has been placed last in the focus
> order, even though it was just spawned by Terminal. This is
> undesirable if you're e.g. making a game where stuff happens as soon
> as the window is spawned and the player is expected to respond quickly
> but can't until she Command+Tabs over or clicks in the unfocused
> window. I've googled for this extensively and haven't found a way
> around it, so I thought I'd ask here. If there is a more appropriate
> place to ask, please let me know.
>
> Thanks,
> Josh


Yes, this is standard  behavior for OS X. Running an app in Terminal 
keeps focus in the Terminal unless you switch by clicking windows. The 
Command-Tab behavior is determined by the windowing system, not by a 
newly spawned process.

The way around this is to wrap your application up in a standard Mac app 
bundle using py2app. The average Mac user isn't going to launch a 
Python-based game from the command line.

Kevin



-- 
Kevin Walzer
Code by Kevin
http://www.codebykevin.com



More information about the Python-list mailing list