Я нахожусь на python2-7. Я хочу получить в tkinter кнопку, которая останавливает чтение заметок, созданных с помощью fluidsynth.
Я обнаружил, что общим решением является использование time.after как здесь: Как создать кнопку остановки Tkinter GUI, чтобы разорвать бесконечный цикл?
Но в моем случае я не могу использовать ее, потому что мне нужно некоторое время между noteon и noteoff, чтобы датьПродолжительность моих заметок.Более того, я хочу воспроизводить ноты ТОЛЬКО если я нажму на начало (а не в начале, как в решении по ссылке).
Итак, я создал этот код, но он не работает, потому что var_start всегда инициализируется какint:
from tkinter import*
import fluidsynth
import time
fs=fluidsynth.Synth()
fs.start(driver='alsa', midi_driver='alsa_seq')
org_charge = fs.sfload("organ.sf2")
fs.program_select(0,org_charge, 0, 0)
time.sleep(1)
var_start=int
def start():
global var_start
var_start=1
def stop():
global var_start
var_start=0
root=Tk()
if var_start==1:
fs.noteon(0,67,127)
time.sleep(1)
fs.noteoff(0,67)
fs.noteon(0,71,127)
time.sleep(1)
fs.noteoff(0,71)
fs.noteon(0,74,127)
time.sleep(1)
fs.noteoff(0,74)
Button(root, text='start', command= start).pack(padx=10, pady=10)
Button(root, text='stop', command= stop).pack(padx=10, pady=10)
root.mainloop()
У меня нет другой идеи изменить мой код ... Может кто-нибудь мне помочь?
Спасибо