diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py --- a/Lib/tkinter/test/support.py +++ b/Lib/tkinter/test/support.py @@ -17,22 +17,16 @@ # process not running under the same user id as the current console # user. To avoid that, raise an exception if the window manager # connection is not available. - from ctypes import cdll, c_int, pointer, Structure - from ctypes.util import find_library + import subprocess + p = subprocess.Popen('wish', stdin=subprocess.PIPE) + p.stdin.write(b'exit\r\n') + p.stdin.flush() + xit=p.wait() + if xit != 0: + _tk_unavailable = "cannot run without OS X gui process" - app_services = cdll.LoadLibrary(find_library("ApplicationServices")) + p.stdin.close() - if app_services.CGMainDisplayID() == 0: - _tk_unavailable = "cannot run without OS X window manager" - else: - class ProcessSerialNumber(Structure): - _fields_ = [("highLongOfPSN", c_int), - ("lowLongOfPSN", c_int)] - psn = ProcessSerialNumber() - psn_p = pointer(psn) - if ( (app_services.GetCurrentProcess(psn_p) < 0) or - (app_services.SetFrontProcess(psn_p) < 0) ): - _tk_unavailable = "cannot run without OS X gui process" else: # not OS X import tkinter try: