den Mac Bezüglich ich bemerkte, dass es ein Problem, dass sein kann, wenn es mehrere Pythons GUIs ausgeführt ist, wird jeder Prozess namens „Python“ und Applescript wird dazu neigen, die falschen nach vorne zu fördern . Hier ist meine Lösung. Die Idee besteht darin, eine Liste laufender Prozess-IDs vor und nach dem Laden von Tkinter abzurufen. (Beachten Sie, dass dies AppleScript-Prozess-IDs sind, die scheinbar keine Beziehung zu ihren Posix-Gegenstücken haben. Gehen Sie auf Abbildung.) Dann wird der ungerade Mann Ihnen gehören und Sie diesen zum vordersten bewegen. (Ich dachte nicht, dass diese Schleife am Ende notwendig wäre, aber wenn man einfach jeden Prozess bekommt, dessen ID procID ist, gibt AppleScript anscheinend das eine Objekt mit dem Namen zurück, das ist natürlich das nicht-eindeutige "Python", also wir sind wieder auf Platz eins, es sei denn es ist etwas, was ich vermisst habe)
import Tkinter, subprocess
def applescript(script):
return subprocess.check_output(['/usr/bin/osascript', '-e', script])
def procidset():
return set(applescript(
'tell app "System Events" to return id of every process whose name is "Python"'
).replace(',','').split())
idset = procidset()
root = Tkinter.Tk()
procid = iter(procidset() - idset).next()
applescript('''
tell app "System Events"
repeat with proc in every process whose name is "Python"
if id of proc is ''' + procid + ''' then
set frontmost of proc to true
exit repeat
end if
end repeat
end tell''')
Versucht die .lift() auf Mac 10.9 hat nicht funktioniert. – shawn
was ich sagen wollte ist: die windows.attributes (1) bringt nach vorne, aber die (0) scheint es nicht zu deaktivieren. Es sendet es tatsächlich nach hinten. – shawn
funktioniert in Windows 7 – Aftershock