Сочетание различных других методов, найденных в сети, работает на OS X 10.11 и Python 3.5.1, работающих в venv, и должно работать на других платформах.В OS X оно также предназначается для приложения по идентификатору процесса, а не по имени приложения.
from tkinter import Tk
import os
import subprocess
import platform
def raise_app(root: Tk):
root.attributes("-topmost", True)
if platform.system() == 'Darwin':
tmpl = 'tell application "System Events" to set frontmost of every process whose unix id is {} to true'
script = tmpl.format(os.getpid())
output = subprocess.check_call(['/usr/bin/osascript', '-e', script])
root.after(0, lambda: root.attributes("-topmost", False))
Вы вызываете его прямо перед вызовом mainloop()
, например:
raise_app(root)
root.mainloop()