2014-11-22 58 views
0

我试图让一些混乱的代码通过CSS应用样式,但我无法得到应用的样式。这是不工作的代码的一些例子:如何将CSS应用于杂乱的舞台?

#!/usr/bin/python 
from gi.repository import Clutter, GdkPixbuf, Cogl, Gtk, Gdk 

Clutter.init([]) 
stage = Clutter.Stage() 
stage.set_size(600, 300) 

pixbuf = GdkPixbuf.Pixbuf.new_from_file('menu.svg') 
pixel_format = Cogl.PixelFormat.RGBA_8888 if pixbuf.get_has_alpha() \ 
    else Cogl.PixelFormat.RGB_888 

image = Clutter.Image() 
image.set_data(pixbuf.get_pixels(), pixel_format, pixbuf.get_width(), 
    pixbuf.get_height(), pixbuf.get_rowstride()) 

image_actor = Clutter.Actor() 
image_actor.set_content_scaling_filters(
    Clutter.ScalingFilter.TRILINEAR, 
    Clutter.ScalingFilter.LINEAR 
) 
image_actor.set_content(image) 
image_actor.set_size(22,22) 
image_actor.set_name("MyImage") 
stage.add_child(image_actor) 

css = """ 
#MyImage { 
    icon-shadow: red 0px 0px 30px; 
    background-color: #000000; 
    margin: 10px; 
} 
""" 
style_provider = Gtk.CssProvider() 
style_provider.load_from_data(css) 

# This is the part that doesn't work 
Gtk.StyleContext.add_provider_for_screen(
    Gdk.Screen.get_default(), 
    style_provider, 
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION 
) 

stage.connect("destroy", lambda w: Clutter.main_quit()) 
stage.show() 
Clutter.main() 

我已经尝试了几种不同的东西,但风格从未得到应用。

回答

1

Clutter对GTK +或CSS一无所知,所以你不能在Clutter中使用GTK + CSS机器。

,如果你想使用一个GtkStyleContext和GTK + API绘制ClutterActor里面的东西,你可以用一个ClutterCanvas内容,然后使用gtk_render_* API与该ClutterCanvas::draw信号给你的开罗上下文。