Попросил нейронку написать код для проги которая автоматически вводит символ который на экране, но он отказывается запускаться. Несколько часов мучался, но так и не понял в чём проблема, все библиотеки вроде как установлены. Просто при запуске вылазит консоль и сразу закрывается, ошибок тоже никаких не вылазит. Python 3.13
import tkinter as tk
import time
import keyboard
import pyautogui
import threading
import json
class AutoKeylogger:
def __init__(self, window_title=None):
self.running = False
self.window_title = window_title
self.hwnd = None
self.thread = None
self.config_file = "config.json"
self.load_config()
self.root = tk.Tk()
self.root.title("Автоматический ввод")
self.root.overrideredirect(True)
self.root.wm_attributes("-topmost", True)
self.status_label = tk.Label(self.root, text="Остановлено", width=20)
self.status_label.pack()
self.start_button = tk.Button(self.root, text="Начать", command=self.start_tracking)
self.start_button.pack(side=tk.BOTTOM, pady=10)
self.stop_button = tk.Button(self.root, text="Остановить", command=self.stop_tracking)
self.stop_button.pack(side=tk.BOTTOM, pady=10)
self.current_char_label = tk.Label(self.root, text="Текущий символ: -", width=20)
self.current_char_label.pack()
self.speed_slider = tk.Scale(self.root, from_=0.1, to=2.0, resolution=0.1, orient=tk.HORIZONTAL, label="Скорость ввода")
self.speed_slider.set(1.0) # Значение по умолчанию
self.speed_slider.pack(side=tk.BOTTOM, pady=10)
self.coords = None
self.coords_lock = threading.Lock()
self.update_coords_button = tk.Button(self.root, text="Обновить координаты", command=self.update_coords)
self.update_coords_button.pack(side=tk.BOTTOM, pady=10)
self.root.bind('<F6>', self.toggle_running)
def start_tracking(self):
if not self.running:
self.running = True
self.status_label.config(text="Запущено...")
self.thread = threading.Thread(target=self.track_and_input)
self.thread.start()
def stop_tracking(self):
if self.running:
self.running = False
self.status_label.config(text="Остановлено")
if self.thread:
self.thread.join()
self.thread = None
def track_and_input(self):
while self.running:
try:
self.hwnd = pyautogui.getWindowsWithTitle(self.window_title)[0].window
if self.hwnd is None:
print("Окно с указанным названием не найдено.")
self.status_label.config(text="Окно не найдено")
time.sleep(1)
continue
screenshot = pyautogui.screenshot()
# Получаем координаты выделенной области
self.coords = pyautogui.mouseInfo()
# Отображаем текущий символ
current_char = keyboard.read_event(suppress=True)
self.current_char_label.config(text=f"Текущий символ: {current_char}")
# Ввод символа с учетом скорости
time.sleep(1 / self.speed_slider.get())
keyboard.write(current_char)
except Exception as e:
print(f"Ошибка: {e}")
self.status_label.config(text=f"Ошибка: {e}")
def toggle_running(self):
self.running = not self.running
if self.running:
self.start_tracking()
else:
self.stop_tracking()
def update_coords(self):
with self.coords_lock:
self.coords = pyautogui.mouseInfo()
self.status_label.config(text="Координаты обновлены")
def save_config(self):
config = {
"window_title": self.window_title,
"speed": self.speed_slider.get()
}
with open(self.config_file, "w") as f:
json.dump(config, f)
def load_config(self):
try:
with open(self.config_file, "r") as f:
config = json.load(f)
self.window_title = config["window_title"]
self.speed_slider.set(config["speed"])
except FileNotFoundError:
self.window_title = "Название окна"
self.speed_slider.set(1.0)
except json.JSONDecodeError:
print("Ошибка при чтении файла конфигурации. Используются значения по умолчанию.")
self.window_title = "Название окна"
self.speed_slider.set(1.0)
def run(self):
self.load_config()
def start(self):
self.run()
def close(self):
self.save_config()
self.root.destroy()