类/对象中的类或对象

时间:2015-10-01 02:31:45

标签: python tkinter

我阅读了相关的帖子,但他们并不满足我。

使用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

1 个答案:

答案 0 :(得分:0)

根据您当前的代码:

您的音符类源自MusicSheet。我想你想让笔记成为工作表的一部分,而不是工作表的一个实例。如果您从MusicSheet派生它们,Note的 init 将创建一个新的MusicSheet实例,而不是添加到MusicSheet。

对于Notes,我建议使用Tkinter.CanvasItem类进行继承。 (对于不是半/全休息或全音符的所有内容,类型应为多边形)

使用self.can.create_oval应该在MusicSheet中完成,而不是在Note Classes中,因为self.can应该引用MusicSheet。