def get_key(self): try: sel = map(int, self.key_btn.curselection()) print sel return number.keys()[sel[0]] except IndexError: return 'C'
def __init__(self, master): frame = Frame(master) frame.pack() fluidsynth.init("ChoriumRevA.SF2") roman_num = [0,2,4,5,7,9,11] self.progression = [] self.buttons = {} self.prog_var = StringVar() self.display = Label( master, textvariable = self.prog_var).pack() self.uniprog_var = StringVar() self.unidisplay = Label( master, textvariable = self.uniprog_var).pack() self.sug_var = StringVar() self.sug_label = Label( master, textvariable = self.sug_var).pack() #### Chord Buttons #### self.key_btn = Listbox(frame) self.key_btn.bind("<<ListboxSelect>>", self.display_progression) self.key_btn.pack(side=BOTTOM) for k in number.keys(): self.key_btn.insert(END, k) for ch in roman_num: btn = Button(frame, text=roman[ch], command=partial( self.print_ch, ch ) ) btn.pack(side=LEFT) self.buttons[ ch ] = btn #### other buttons #### self.pop = Button(frame, text='Del', command=self.pop_ch) self.pop.pack(side=BOTTOM) self.play = Button(frame, text='Play', command=self.play_prog) self.play.pack(side=TOP) self.sugg = Button(frame, text='?', command=self.suggest) self.sugg.pack(side=BOTTOM) self.save_btn = Button(frame, text='Save', command=self.save_midi) self.save_btn.pack(side=TOP) #### Checkbox buttons for intervals #### self.add7_var = BooleanVar() self.add7 = Checkbutton( master, text="+ 7", variable = self.add7_var ) self.add7.pack() self.maj_var = BooleanVar() self.maj = Checkbutton( master, text="Major", variable = self.maj_var ) self.maj.pack()