Я хочу нарисовать свой собственный объект на макете, поэтому я пытаюсь создать подкласс gdk.drawable,
class link(gtk.gdk.Drawable):
def __init__(self,comp1,comp2,layout):
super(link, self).__init__()
self.x1=comp1.xpos
self.y1=comp1.ypos
self.x2=comp2.xpos
self.y2=comp2.ypos
self.layout=layout
ошибка:
не может создать экземпляр абстрактного (неинстанцируемого) типа `GdkDrawable '
Я могу сделать это без создания подкласса drawable, используя layout.bin_window.draw_line () в методе drawlink () моего объекта ссылки, но я не могу создать собственный графический контекст gdk.gc для каждого объекта, и у меня есть использовать layout.get_style (), который будет одинаковым для всех моих ссылок!
def drawlink(self):
gc = self.layout.get_style().fg_gc[gtk.STATE_NORMAL]
gc.line_style=gtk.gdk.LINE_ON_OFF_DASH
gc.line_width=6
self.layout.bin_window.draw_line(gc,self.x1, self.y1, self.x2, self.y2)
это причина, по которой я хочу создать подкласс drawable. если бы я мог использовать пользовательский gc без подкласса drawable или (window, pixmap), было бы здорово.
Спасибо