web-dev-qa-db-fra.com

PyGTK changeant de thème pour le menu contextuel

J'ai passé quelques heures à chercher sur Google et j'ai abandonné maintenant ...

Je dois changer l'arrière-plan du menu contextuel dans mon application. Il est défini sur le thème par défaut du système ... et j'ai besoin que cela soit défini sur Radiance pour tout le temps.

des idées pour y parvenir?

Here is how it looks now and this need to be light color

3
Majster-pl

Je thématise mes fenêtres contextuelles comme suit:

#Use Css themes
css = Gtk.CssProvider()
css.load_from_data("""
        .popup {background-color: rgba(0,0,0,0); border: 0px rgba(255,255,255,0);  border-radius: 14px; border-width: 0;  }
    """ 
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), css,
        Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

#Get popup parent and set rgba visual so I can do transparency
pwindow=self.popup.get_parent()
screen=pwindow.get_screen()
pwindow.set_visual(screen.get_rgba_visual())

#Give popups the popup CSS class
self.popup.get_style_context().add_class('popup')

J'utilise également le Caire pour dessiner la fenêtre contextuelle et lui donner une belle texture. Pour ce faire, je connecte simplement son signal d'appel à un rappel.

Je regarderais le thème Radiance Gtk pour découvrir quelle est la couleur d'arrière-plan et l'utiliser pour le paramètre CSS de couleur d'arrière-plan. Vous pouvez le trouver dans /usr/share/themes/Radiance/Gtk-3.0/gtk.css. Si vous n'avez pas besoin de transparence, sautez le truc pwindow ci-dessus et ajoutez simplement le style_context à votre popup.

4
Ian B.