1

描画領域の透明な背景を設定する際に問題が発生しました。

私がこれが欲しい理由は、背景があるメインウィンドウがあるからです

def draw_pixbuf(self,widget, event):
    path = 'test.jpg'
    pixbuf = gtk.gdk.pixbuf_new_from_file(path)
    scaled_buf = pixbuf.scale_simple(800,480,gtk.gdk.INTERP_BILINEAR)
    widget.window.draw_pixbuf(widget.style.bg_gc[gtk.STATE_NORMAL],    scaled_buf, 0, 0, 0,0)
self.window = gtk.Window()
self.window.connect("delete-event", gtk.main_quit)
self.window.set_decorated(False)
self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
self.window.set_size_request(800,480)
hbbox = gtk.HBox()
hbbox.connect('expose-event', self.draw_pixbuf)

したがって、私の HBox にはこの背景があり、その中に 2 つの Fixed コンテナー (1 つのボタンと 1 つの描画領域) があります。

fix = gtk.Fixed()
image = gtk.Image()
image.set_from_file("close.png")
event_box = gtk.EventBox()
event_box.add(image)
event_box.set_size_request(30,30)
event_box.set_visible_window(False)
event_box.connect("button_press_event",gtk.mainquit)
fix.put(event_box,140,0)

self.darea = gtk.DrawingArea()

self.darea.set_size_request(450,300)  
self.darea.connect("expose-event", self.expose)
fix2 = gtk.Fixed()
fix2.put(self.darea,175,90)
hbbox.pack_start(fix2, True, False, 10)
hbbox.pack_end(fix, True, False, 10)
#hbbox.pack_start(self.darea,True,False,10)
self.window.add(hbbox)
self.window.show_all()

ただし、描画領域は、HBox の背景を独自のデフォルトの背景 (グレー) でオーバーライドします。modify_bg 関数で背景を変更することはできますが、HBox の背景にカイロのアニメーション テキストを書き込むために透明にしたいです。

したがって、目標は、ウィンドウの背景画像を作成し、caito アニメーション テキストをその上に描画することであり、灰色の四角形 (描画領域の背景) には描画しません。

私はGTKを初めて使用するので、重要な方法を見逃しているかもしれません。

お役に立てれば幸いです。ありがとうございました。

4

1 に答える 1

1

私も解決策を見つけられず、カイロ(Pycairo)に切り替えました

詳細については、GTK 描画可能領域の透明な背景色を参照してください。

于 2015-11-14T17:45:47.813 に答える