python - 如何将 CSS 应用于杂乱的舞台?

标签 python css clutter

我试图获取一些困惑的代码以通过 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()

我尝试了几种不同的方法,但样式从未得到应用。

最佳答案

Clutter 对 GTK+ 或 CSS 一无所知,因此您不能将 GTK+ CSS 机制与 Clutter 一起使用。

如果您想使用 GtkStyleContext 和 GTK+ API 在 ClutterActor 中绘制内容,您可以使用 ClutterCanvas 内容,并且然后将 gtk_render_* API 与 ClutterCanvas::draw 信号提供给您的 Cairo 上下文一起使用。

关于python - 如何将 CSS 应用于杂乱的舞台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080551/

相关文章:

用于快速删除任何可能的子字符串实例的 Python 正则表达式?

python - 用户只能看到他的数据 Django

python - 如何计算标记化列表中的中文词频?

jquery - 如何在TinyMCE编辑器中获取和设置CSS类?

javascript - 在悬停时显示一个 DIV,但在悬停在另一个 DIV 内。使用 CSS

html - 如何让文字垂直居中?

clutter - 杂乱 Actor 背后的效果

java - 在java中使用for循环打印星号