Я на python2-7, я хочу получить кнопку в tkinter, которая останавливает чтение заметок, созданных с помощью FluidSynth.
Я обнаружил, что распространенным решением является использование time.after, как здесь: to-break-an-infinite-loop">Как создать кнопку остановки графического интерфейса Tkinter, чтобы разорвать бесконечный цикл?
Но в моем случае я не могу использовать его, потому что мне нужно время между noteeon и 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()
У меня нет другой идеи изменить мой код... Может ли кто-нибудь мне помочь?
Спасибо