我想在布局上绘制自己的对象,所以我试图继承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'
的实例
我可以在我的链接对象的方法drawlink()中使用layout.bin_window.draw_line()继承drawable而无法创建它,但是我无法为每个对象创建自定义图形上下文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)那就太棒了。
由于
答案 0 :(得分:1)
任何替代方案?
如果我理解正确,那么您要做的不是为gtk.gdk.Drawable
创建子类,而是使用您自己的内容填充 gtk.DrawingArea
小部件。该小部件的描述是:
gtk.DrawingArea
窗口小部件用于创建自定义用户界面元素。它本质上是一个包含gtk.gdk.Window
的空白小部件,您可以使用它。