Untitled
unknown
python
18 days ago
5.8 kB
6
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