Untitled
unknown
python
9 months ago
5.8 kB
39
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