Скомпилированная из py в exe программа не запускается
Написал программу и решил отправить друзьям, не имеющих python, но когда скомпилировал я решил проверить её работоспособность и в итоге открывается терминал и он почти сразу закрывается. Компилировал как через pyinstaller, так и auto-py-to-exe, но не помогло. Если кто-то знает, как это исправить то скажите как.
КОД:
import math
import threading
import time
# import keyboard
import mouse
import tkinter as ttk
from tkinter import messagebox as msgbox
class TK(ttk.Tk):
def __init__(self, value):
super().__init__()
# class_pos_mouse = value["pos_mouse"]
class_is_working = value["is_working"]
# class_delay = value["delay"]
class_distance = value["distance"]
text_btn = "OFF" if class_is_working else "ON"
self.btn = ttk.Button(text=text_btn, command=change)
text_lbl = f"{round(class_distance)}p (pixels)"
self.lbl = ttk.Label(text=text_lbl)
def start_settings(self):
self.geometry("200x50")
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()
time.sleep(delay)
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?"):
with open(file="save.txt", mode="w") as file:
file.write(str(distance))
is_working = False
tk.destroy()
def main():
thread = threading.Thread(target=mileage_count, daemon=True)
thread.start()
tk.protocol("WM_DELETE_WINDOW", on_closing)
tk.mainloop()
pos_mouse = (0, 0)
is_working = False
delay = 0.001
with open(file="save.txt", mode="r") as file:
distance = float(file.read())
tk = TK(value={"pos_mouse": pos_mouse,
"is_working": is_working,
"delay": delay,
"distance": distance})
if __name__ == "__main__":
main()