我阅读了相关的帖子,但他们并不满足我。
使用tkinter我编写了一个类Musicsheet。然后我写了一些笔记,比如wholeNote& halfNote等。在实例化MusicSheet后跟一个WholeNote实例后,它看起来还不错,音乐表上有整个音符。然而,当我实例化一个半音时,整个音符已经消失,只有半张音符在表单上;看起来halfNote也已经实例化(子类?)一个新的音乐表,因此之前的音符/对象不在那里。这导致最新的实例始终是工作表中唯一的实例。
感谢您的回复。以下是其他信息:
class Musicsheet(Frame):
.......TCanvas initialization..
class WholeNote(MusicSheet):
......
class HalfNote(MusicSheet):
def __init__(self,x1,y1,x2,y2)
self.can.create_oval(x1,y1,x2,y2)
.....
more notes classes follow
答案 0 :(得分:0)
根据您当前的代码:
您的音符类源自MusicSheet。我想你想让笔记成为工作表的一部分,而不是工作表的一个实例。如果您从MusicSheet派生它们,Note的 init 将创建一个新的MusicSheet实例,而不是添加到MusicSheet。
对于Notes,我建议使用Tkinter.CanvasItem
类进行继承。
(对于不是半/全休息或全音符的所有内容,类型应为多边形)
使用self.can.create_oval
应该在MusicSheet中完成,而不是在Note Classes中,因为self.can
应该引用MusicSheet。