Как полностью остановить программу на tkinter (python)?

После нажатия на крестик, программа продолжает жрать ЦП и я не знаю, как это исправить, не считая принудительного завершения программы или через PyCharm, или через Диспетчер задач. Пишу программу с помощью библиотеки tkinter и sys.exit() не работает. Может кто-то знает как это починить.

КОД:

import math
import sys
import threading

import mouse

import tkinter as ttk
from tkinter import messagebox as msgbox


class TK(ttk.Tk):
    def __init__(self):
        super().__init__()
        self.btn = ttk.Button(text="ON", command=change)
        self.lbl = ttk.Label(text=f"0p (pixels)")

    def start_settings(self):
        self.geometry("200x300")
        self.title("MMC")

    def place(self):
        self.btn.pack()
        self.lbl.pack()

    def mainloop(self, n=0):
        self.start_settings()
        self.place()
        super().mainloop(n)


def mileage_count():
    global pos_mouse
    global distance

    while True:
        if is_working:
            new_pos_mouse = mouse.get_position()

            if pos_mouse != new_pos_mouse:
                distance += math.hypot(abs(pos_mouse[0] - new_pos_mouse[0]), abs(pos_mouse[1] - new_pos_mouse[1]))

                pos_mouse = new_pos_mouse

                tk.lbl["text"] = f"{round(distance)}p (pixels)"
        else:
            pos_mouse = mouse.get_position()


def change():
    global is_working

    is_working = not is_working
    tk.btn["text"] = "OFF" if is_working else "ON"


def on_closing():
    global is_working

    if msgbox.askokcancel("Quit", "Do you want to quit?"):
        is_working = False
        tk.destroy()
        sys.exit()
        

tk = TK()

pos_mouse = (0, 0)
is_working = False
distance = 0


if __name__ == "__main__":
    thread = threading.Thread(target=mileage_count)

    thread.start()

    tk.protocol("WM_DELETE_WINDOW", on_closing)
    tk.mainloop()

Ответы (0 шт):