我在Python 2.7和PyGTK中有一個項目。在PyGTK中創建RGBA彩色地圖
我需要創建一個透明的背景窗口,但仍然能夠顯示窗口內的圖像(基於像素圖和掩碼)和其他對象。我使用下面的代碼,但沒有圖像對象顯示在Ubuntu(Oneric Ocelot),並且我得到一個錯誤,下面發佈,(但窗口,否則顯示,其按鈕對象)。這甚至不會在Windows 7中顯示(這個錯誤也在下面發佈)。
def expose(widget, event):
cr = widget.window.cairo_create()
# Sets the operator to clear which deletes everything below where an object is drawn
cr.set_operator(cairo.OPERATOR_CLEAR)
# Makes the mask fill the entire window
cr.rectangle(0.0, 0.0, *widget.get_size())
# Deletes everything in the window (since the compositing operator is clear and mask fills the entire window
cr.fill()
# Set the compositing operator back to the default
cr.set_operator(cairo.OPERATOR_OVER)
hab_fish_win = gtk.Window()
hab_fish_win.resize(640, 480)
hab_fish_win.set_resizable(False)
hab_fish_win.set_decorated(False)
hab_fish_win.set_has_frame(False)
hab_fish_win.set_position(gtk.WIN_POS_CENTER)
hab_fish_win.set_app_paintable(True)
screen = hab_fish_win.get_screen()
rgba = screen.get_rgba_colormap()
hab_fish_win.set_colormap(rgba)
hab_fish_win.connect('expose-event', expose)
hab_fish_win.show()
WINDOWS 7 RUN:
Traceback (most recent call last): File "C:\Users\user\MousePaw Games\Word4Word\PYM\fishtest2.py", line 337, in HAB_FISH() File "C:\Users\user\MousePaw Games\Word4Word\PYM\fishtest2.py", line 100, in init hab_fish_win.set_colormap(rgba) TypeError: Gtk.Widget.set_colormap() argument 1 must be gtk.gdk.Colormap, not None
快速 「打印RGBA」 確認RGBA是 「無」,從而該錯誤。
UBUNTU 「ONERIC山貓」 RUN:
Gtk Warning: Attempt to draw a drawable with depth 24 to a drawable with depth 32
這是怎麼回事?我非常需要窗口的透明背景。