Python 3 strings are unicode and, therefore, must be encoded to bytes for comparison. Try this test:
if msvcrt.kbhit() and msvcrt.getch() == chr(27).encode():
aborted = True
break
Or this test:
if msvcrt.kbhit() and msvcrt.getch().decode() == chr(27):
aborted = True
break
Or this test:
if msvcrt.kbhit() and ord(msvcrt.getch()) == 27:
aborted = True
break