
Pasé unas horas buscando en Google y ahora me di por vencido...
Necesito cambiar el fondo del menú emergente en mi aplicación. Se configuró en cualquier tema predeterminado del sistema... y necesito que esté configurado en Radiance todo el tiempo.
¿Alguna idea de cómo lograr esto?
Respuesta1
El tema de mis ventanas emergentes es el siguiente:
#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')
También uso cairo para dibujar la ventana emergente y darle una textura agradable. Para hacer eso, simplemente conecto su señal de "extraer" a una devolución de llamada.
Miraría el tema Radiance Gtk para descubrir cuál es el color de fondo y lo usaría para la configuración CSS del color de fondo. Puedes encontrarlo en /usr/share/themes/Radiance/Gtk-3.0/gtk.css
. Si no necesita transparencia, omita las cosas de pwindow anteriores y simplemente agregue style_context a su ventana emergente.