feat: improves screen clearing functionality

Updates the screen clearing function to provide a more robust cross-platform solution. It now attempts to reset text attributes on Windows and uses `shutil.which` to locate the `clear` command on Unix-like systems, falling back to ANSI escape codes if necessary.

This change improves the screen-clearing function, ensuring its effectiveness regardless of the operating system or available commands.
This commit is contained in:
kinoshitakenta 2025-05-28 15:57:25 +08:00
parent 0671d49497
commit 3c23ee2ce9
Signed by: kinoshitakenta
GPG Key ID: A811E8CA36EF425E
1 changed files with 20 additions and 2 deletions

22
main.py
View File

@ -25,12 +25,30 @@ def get_usage() -> list[tuple]:
return cmd_list
def display_usage():
def clear_screen():
if os.name == 'nt':
# Windows system
try:
# try to reset the text attributes
kernel32 = ctypes.windll.kernel32
handle = kernel32.GetStdHandle(-11) # STD_OUTPUT_HANDLE
kernel32.SetConsoleTextAttribute(handle, 7)
except Exception:
pass
os.system('cls')
else:
os.system('clear')
# Unix-like system
clear_cmd = shutil.which('clear')
if clear_cmd:
os.system(clear_cmd)
else:
# backup plan: Use ANSI escape codes (to clear and reset the screen).
print('\033c', end='')
def display_usage():
clear_screen()
for cmd, msg in get_usage():
print(f"{cmd}: {msg}")