我想提請我自己的一個佈局對象的問題,所以我想繼承gdk.drawable,繪製自己的對象上的佈局:與子類gtk.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
錯誤:
cannot create instance of abstract (non-instantiable) type `GdkDrawable'
我可以不用在方法drawlink使用我的鏈接對象的layout.bin_window.draw_line()()繪製的子類,但我不能爲每個對象自定義圖形上下文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)
這就是我想要繪製子類的原因。如果我可以使用自定義gc而無需繪製子類或(window,pixmap),那就太棒了。
感謝
嗨,我想畫一條線(鏈接)來連接兩個對象COMP1和COMP2,這兩個目標都從按鈕的子類,我不需要任何的窗口。如果這是唯一的方法,是否有可能使矩形窗口透明,因此它只顯示鏈接?(我正在繪製佈局) – OpenI
@Openl - 您需要一個頂層容器(窗口,對話框) 。窗口的不透明度可以通過[set_opacity]設置(http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--set- opacity)。 – mac
我可以做到這一點,包括layout.bin_window.draw_line()在我的鏈接對象的方法drawlink(),但我無法創建自定義grafic上下文gdk.gc,我不得不使用layout.get_style()這對我所有的鏈接都是一樣的!這就是我想要繪製子類的原因。如果我可以使用自定義gc而無需繪製子類或(window,pixmap),那就太棒了。所以,謝謝你的支持,但我真的非常喜歡你的方法作爲最後的手段(請告訴我,如果你知道你的解決方案是最好的) – OpenI