New Tkinter windows don't get focus on OS X
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.
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.
Code by Kevin
More information about the Python-list