Question

I have a project in Python 2.7 and PyGTK.

I need to create a transparent background window, but still be able to display images (pixmap and mask based) and other objects inside of the window.

I am using the following code, but no image objects are showing up in Ubuntu (Oneric Ocelot), and I'm getting an error, posted below, (though the window otherwise displays, with its button objects). This won't even render in Windows 7 (this error also posted below).

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

A quick "print rgba" confirms that rgba is "None", thus the error.

UBUNTU "ONERIC OCELOT" RUN:

Gtk Warning: Attempt to draw a drawable with depth 24 to a drawable with depth 32

What is going on? I desperately need that transparent background for the window.

Was it helpful?

Solution

Okay, after hours of research, I have found that Windows does not support this sort of transparency. As for the Linux error, I don't know.

I'm porting to PyGObject, and using another method for my ends. I would suggest readers of this answer look into it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top