Еще один супер зеленый вопрос, я в этом уверен:
Я прогрессирую со своей страстью к метроному / секвенсору, и для некоторого фона я знаю, что я буду помещать этот код в Raspberry Пи и отображение информации на каком-то экране, поэтому я написал этот код и импортировал черепаху, чтобы однажды отобразить ее на экране 320 х 240.
У меня есть все oop, которое считает такты и удары и отображает их в окне черепахи размером 320 x 240.
Я хочу иметь возможность нажать стрелку вправо на клавиатуре, чтобы начать метроном и стрелка влево на моей клавиатуре, чтобы остановить его.
Я пробовал разные версии onkey (), onkeyrelease () и onkeypress (), но не знаю, как прервать l oop, чтобы остановить его или заставить его ждать команды для его запуска.
код ниже:
import os
import time
import turtle
from turtle import *
win = turtle.Screen()
win.title("Beats & Measures")
win.bgcolor("black")
win.setup(width=240, height=320)
win.tracer(0)
pen1 = turtle.Turtle()
pen1.speed(0)
pen1.color("white")
pen1.penup()
pen1.hideturtle()
pen1.goto(150,-120)
pen2 = turtle.Turtle()
pen2.speed(0)
pen2.color("white")
pen2.penup()
pen2.hideturtle()
pen2.goto(160,-70)
pen3 = turtle.Turtle()
pen3.speed(0)
pen3.color("white")
pen3.penup()
pen3.hideturtle()
pen3.goto(-160,-70)
pen4 = turtle.Turtle()
pen4.speed(0)
pen4.color("white")
pen4.penup()
pen4.hideturtle()
pen4.goto(-160,-140)
three4 = range(1,4)
four4 = range(1,5)
six8 = range(1,7)
eighth = range(1,9)
twelfth = range(1,13)
sixteenth = range(1,17)
thirty2nd = range(1,33)
signatures = [three4,four4,six8,eighth,twelfth,sixteenth,thirty2nd]
beat = signatures[1]
pen3.write("Time Signature", align="left", font=('Digital-7 Mono', 18, 'bold'))
# pen4.write("Choose Time Signature: ", align="left", font=('Digital-7 Mono', 14, 'bold'))
def beatsMeasures():
measure = 1
while True:
for i in beat:
time.sleep(.5)
pen2.write("measure : beat",align="right", font=('Digital-7 Mono', 18, 'bold'))
pen1.clear()
pen1.write("{}:{}".format(measure, i), align="right", font=('Digital-7 Mono', 48, 'normal'))
measure = measure + 1
beatsMeasures()