Open 3mpasz00 opened 2 weeks ago
import tkinter as tk import time import winsound
tempo = 100 # Uderzenia na minutę (BPM) czas_trwania_taktu = 60 / tempo # Czas trwania jednego taktu (w sekundach) liczba_uderzen_w_takcie = 4 # Liczba uderzeń w takcie
uderzenie_wysokie = 800 # Częstotliwość dźwięku wysokiego (Hz) uderzenie_niskie = 400 # Częstotliwość dźwięku niskiego (Hz)
okno = tk.Tk() okno.title("Metronom wizualny")
ramka_sterowania = tk.Frame(okno) ramka_sterowania.pack()
etykieta_tempo = tk.Label(ramka_sterowania, text="Tempo:") etykieta_tempo.pack()
suwak_tempo = tk.Scale(ramkasterowania, from=40, to=200, orient=tk.HORIZONTAL) suwak_tempo.pack()
przycisk_start_stop = tk.Button(ramka_sterowania, text="Start") przycisk_start_stop.pack()
ramka_metronomu = tk.Frame(okno) ramka_metronomu.pack()
canvas = tk.Canvas(ramka_metronomu, width=200, height=200) canvas.pack()
promien = 100 x = canvas.winfo_width() / 2 y = canvas.winfo_height() / 2 kolor_akcentowany = "red" kolor_pozostale = "gray"
def rysuj_kolo(promien, kolor): canvas.delete("all") canvas.oval(x - promien, y - promien, x + promien, y + promien, fill=kolor)
def metronom(): global tempo, czas_trwania_taktu, liczba_uderzen_w_takcie, \ uderzenie_wysokie, uderzenie_niskie, \ promien, x, y, kolor_akcentowany, kolor_pozostale
# Aktualizacja tempa z suwaka
tempo = suwak_tempo.get()
czas_trwania_taktu = 60 / tempo
while True:
for _ in range(liczba_uderzen_w_takcie):
# Rysuj koło akcentowane
rysuj_kolo(promien, kolor_akcentowany)
winsound.Beep(uderzenie_wysokie, czas_trwania_taktu / 2)
time.sleep(czas_trwania_taktu / 2)
# Rysuj koło pozostałe
rysuj_kolo(promien, kolor_pozostale)
winsound.Beep(uderzenie_niskie, czas_trwania_taktu / 2)
time.sleep(czas_trwania_taktu / 2)
def start_metronom(): przycisk_start_stop.config(text="Stop", command=stop_metronom) metronom()
def stop_metronom(): przycisk_start_stop.config(text="Start", command=start_metronom)
przycisk_start_stop.config(command=start_metronom)
okno.mainloop()
MÓZG LUBI SZYBKOŚĆ