З допомогою було створено наступний код:
from tkinter import *
from PIL import Image, ImageTk
from pygame import mixer
import time
from collections import deque
root = Tk()
a = int(10)
global Mylist
Mylist = []
def plus():
global a
a = int(a)
a += 30
for y in range(50,150,20):
c.create_line(0, y, 500+a, y, width=2,fill="black")
def add_photo(vert,img):
c.create_image(0+a,vert,image=img,tags = 'image')
def play_note(mp3):
mixer.init()
mixer.music.load(mp3)
mixer.music.play()
root.after(2000)
mixer.music.stop()
def create_add_note(vert,img,mp3):
def add(event):
add_photo(vert,img)
plus()
play_note(mp3)
Mylist.append(mp3)
return add
def bu(event):
root.destroy()
def play(event):
for play_note1 in (Mylist):
play_note(play_note1)
selected = None
real_number = None # Перший всадник апокаліпсису
def canvas_on_click(event):
global selected,real_number
overlap_items = c.find_overlapping(event.x, event.y, event.x, event.y)
overlap_items = list(_id for _id in overlap_items if 'image' in c.gettags(_id))
number = overlap_items[0] # Продовження жаху
real_number = (number // 6) - 1 # Id просто кратне 6 і тоді я можу дізнатися порядковий номер ноти
if overlap_items:
item = overlap_items[0]
selected = item
bbox = c.bbox(item)
c.delete('selection')
c.create_rectangle(bbox, outline='red', width=2, tags='selection')
else:
selected = None
c.delete('selection')
#c.bind('<1>', canvas_on_click)
def remove_selected():
if selected is not None:
global Myllist
Mylist.pop(real_number) #типу видалення того елементу
c.delete(selected)
c.delete('selection')
b = Button(root, text='Remove', command=remove_selected)
#b.pack()
c = Canvas(width=500,height=300,bg="white",cursor="pencil")
c.pack()
for y in range(50,150,20):
c.create_line(0, y, 500, y, width=2,fill="black")
pilImage = Image.open("notaall.png")
DO= ImageTk.PhotoImage(pilImage)
pillImageRe = Image.open('notaall.png')
RE = ImageTk.PhotoImage(pillImageRe)
scr = Scrollbar(root)
scr.config(command = c.xview,orient = HORIZONTAL )
scr.pack()
but = Button(root,text='Press to destroy window')
but.place(x=0,y=0)
but.bind('<Button-1>',bu)
but2 = Button(root,text = 'Press to replay')
but2.place(x =200,y = 0)
but2.bind('<Button-1>',play)
b.pack()
c.bind('<1>', canvas_on_click)
root.bind('a',create_add_note(140,DO,'1.mp3'))
root.bind('s',create_add_note(130,RE,'2.mp3'))
root.mainloop()
Дайте,будь ласка, магічний пинок в сторону як видалити звук.
Я розумію типу так. Ось я клікнув по ноті. Дізнався,що вона в списку,наприклад 5 й видалив.
Воно то працює(видаляє і ноту і звук ),але так нормальні люди не пишуть