Untitled
unknown
python
2 months ago
5.8 kB
14
No Index
import tkinter as tk import threading import time import subprocess from pynput.mouse import Controller, Button from pynput.keyboard import Listener, Key import pygame import webbrowser # Używane globalne zmienne mouse_position = None # Przechowuje pozycję myszy is_clicking = False # Czy program klika lewym przyciskiem myszy mouse = Controller() # Inicjalizacja kontrolera myszy # Funkcja do odtwarzania dźwięku def play_sound(): pygame.mixer.init() pygame.mixer.music.load("sound.mp3") # Dodaj ścieżkę do pliku dźwiękowego pygame.mixer.music.play() # Funkcja do odliczania i uzyskiwania pozycji myszy def countdown_and_get_mouse_position(label, countdown_label): global mouse_position for i in range(10, 0, -1): countdown_label.after(0, lambda count=i: countdown_label.config(text=f"Odliczanie: {count} sekund")) time.sleep(1) countdown_label.after(0, lambda: countdown_label.config(text="Czas minął!")) # Pobiera pozycję myszy mouse_position = mouse.position # Przechowuje pozycję myszy jako zmienną globalną label.after(0, lambda: label.config(text=f"Pozycja myszy: {mouse_position}")) # Odtwarzanie dźwięku play_sound() # Funkcja uruchamiająca odliczanie def start_tracking(label, countdown_label): # Uruchamia odliczanie i śledzenie pozycji myszy w osobnym wątku thread = threading.Thread(target=countdown_and_get_mouse_position, args=(label, countdown_label)) thread.start() # Tworzenie funkcji otwierającej adres URL def open_url(url): webbrowser.open(url) # Funkcja do kliknięcia myszy def click_mouse(): global is_clicking while is_clicking: if mouse_position: # Jeśli znaleziona jest pozycja myszy mouse.position = mouse_position # Ustaw pozycję myszy mouse.click(Button.left, 1) # Kliknij lewy przycisk myszy time.sleep(0.05) # Przerwa między kliknięciami wynosi 50 ms # Funkcja obsługująca klawisz F11 def toggle_click(): global is_clicking if is_clicking: # Jeśli klikamy, to zatrzymaj klikanie is_clicking = False print("Klikanie zatrzymane.") else: # Jeśli nie klikamy, rozpocznij klikanie is_clicking = True print("Klikanie rozpoczęte.") thread = threading.Thread(target=click_mouse) # Klikanie w osobnym wątku thread.start() # Nasłuchiwanie klawiszy F11 def listen_to_keyboard(): def on_press(key): if key == Key.f11: # Obsługa klawisza F11 toggle_click() with Listener(on_press=on_press) as listener: listener.join() # Funkcja uruchamiająca ClientServer.exe def start_client(): try: subprocess.Popen(["ClientServer.exe"]) # Uruchamianie client.exe print("Klient został uruchomiony.") except FileNotFoundError: print("Plik ClientServer.exe nie został znaleziony!") # Tworzenie GUI za pomocą tkinter def create_gui(): root = tk.Tk() root.title("Odczytywanie stanu lokomotywy") # Ustawienie stałego rozmiaru okna root.geometry("400x550") # Zwiększona wysokość okna root.resizable(False, False) # Etykieta do wyświetlania pozycji myszy label = tk.Label( root, text=( "W grze wciśnij F8 i wybierz Vehicle I/O. Następnie przesuń niebieskie okno poza widoczny obraz gry - najlepiej w prawy dolny róg," "\nale tak, żeby na ekranie znajdował się fragment przycisku \nCopy To Clipboard" "\n\nKliknij 'Start', aby rozpocząć pomiar pozycji myszy. " "\nNajedź kursorem na widoczny fragment przycisku Copy To Clipboard \nPo zakończonym pomiarze usłyszysz dźwięk. " "\n\nUruchom serwer i prasowanie danych przyciskiem pod spodem, włączy się konsola z informacjami o adresach i zapytaniach do serwera." "\n\nWróc do gry i naciśnij przycisk F11. Kursor ustawi się nad przyciskiem Copy To Clipboard i zacznie go klikać co 150ms. " "\nNie przeszkadza to w grze, jednak nie możesz w tym czasie używać myszki. Aby zakończyć klikanie naciśnij ponownie przycisk F11" "\n\nProgram pobiera dane z systemowego schowka, prasuje i wysyła je na serwer w formacie JSON. Dane JSON możesz obejrzeć dodając na końcu " "\nadresów z konsoli /data." "\n\nJarkPomsky" ), wraplength=380, # Dostosowanie długości tekstu ) label.pack(pady=10) # Etykieta do wyświetlania odliczania countdown_label = tk.Label(root, text="") countdown_label.pack(pady=10) # Przycisk do śledzenia pozycji myszy start_button = tk.Button(root, text="Rozpocznij pomiar pozycji myszy", command=lambda: start_tracking(label, countdown_label)) start_button.pack(pady=10) # Przycisk do uruchamiania klienta client_button = tk.Button(root, text="Uruchom serwer i prasowanie danych", command=start_client) client_button.pack(pady=10) # Etykieta działająca jak hiperłącze hyperlink = tk.Label( root, text="Kliknij tutaj, aby podejrzeć tablice JSON", fg="blue", # Kolor linku cursor="hand2" # Kursor zmienia się na dłoń ) hyperlink.pack(pady=20) # Powiązanie działania z kliknięciem na "link" hyperlink.bind("<Button-1>", lambda e: open_url("http://127.0.0.1:5000/data")) # Rozpoczęcie nasłuchiwania klawiatury w osobnym wątku keyboard_thread = threading.Thread(target=listen_to_keyboard, daemon=True) keyboard_thread.start() # Start aplikacji root.mainloop() # Uruchom aplikację create_gui()
Editor is loading...
Leave a Comment