Question

J'ai un projet en Python 2.7 et PyGTK.

Je dois créer une fenêtre d'arrière-plan transparent, mais toujours être en mesure d'afficher des images (pixmap et masque à base) et d'autres objets à l'intérieur de la fenêtre.

Je suis en utilisant le code suivant, mais pas d'objets d'image font leur apparition dans Ubuntu (Oneric Ocelot), et je reçois une erreur, affichée ci-dessous, (bien que la fenêtre se affiche par ailleurs, avec ses objets boutons). Ce ne sera même pas rendu dans Windows 7 (cette erreur a également affiché ci-dessous).

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:

retraçage (appel le plus récent en dernier): Fichier « C: \ l'utilisateur du Users \ MousePaw Jeux \ Word4Word \ PYM \ fishtest2.py », ligne 337, en HAB_FISH () Fichier "C: \ Users de l'utilisateur \ MousePaw Games \ Word4Word \ PYM \ fishtest2.py", ligne 100, init hab_fish_win.set_colormap (RGBA) TypeError: Argument Gtk.Widget.set_colormap () 1 doit être gtk.gdk.Colormap, non Aucun

Un rapide "confirme l'impression RGBA" qui rgba est "None", donc l'erreur.

UBUNTU RUN "OCELOT Oneric":

Gtk Attention: tentative d'établir une zone de dessin avec la profondeur 24 à une profondeur étirable avec 32

Qu'est-ce qui se passe? Je désespérément besoin de ce fond transparent pour la fenêtre.

Était-ce utile?

La solution

D'accord, après des heures de recherche, j'ai trouvé que Windows ne supporte pas ce genre de transparence. En ce qui concerne l'erreur Linux, je ne sais pas.

Je suis le portage à PyGObject, et en utilisant une autre méthode pour mes extrémités. Je suggère aux lecteurs de ce regard de réponse en elle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top