我可以用CSS设置GtkBox边距/填充的样式吗?

时间:2015-11-21 01:39:30

标签: python css margin padding gtk3

如何使用CSS样式表为GTK app制作这样的布局?

box needle

以下是示例代码:

        public void render(float delta) {


            Gdx.gl.glClearColor(0, 0, 0, 1);
            Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
            renderer.setView(camera);
            renderer.render();
            batch.setProjectionMatrix(camera.combined);     

            camera.update();

            batch.begin();

以下是适用于HTML的CSS样式表

#!/usr/bin/python

import gi

gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")

from gi.repository import Gtk, Gdk


# Main application window
# =======================
class MainWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)

        self.connect("delete-event", Gtk.main_quit)

        self.set_name("main-window")

        # load style from file
        cssProvider = Gtk.CssProvider()
        cssProvider.load_from_path('style.css')

        # get the default screen for the default display
        screen = Gdk.Screen.get_default()

        # new object which will store styling information affecting widget
        styleContext = Gtk.StyleContext()
        styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

        self.resize(200, 200)

        # create box for another boxes
        self.box = Gtk.Box()
        self.box.set_name("box")
        self.add(self.box)

        self.box2 = Gtk.Box()
        self.box2.set_name("box2")
        self.box.pack_start(self.box2, False, False, 0)

        self.text = Gtk.Label.new()
        self.text.set_text('text')
        self.box2.pack_start(self.text, False, False, 0)

        self.box3 = Gtk.Box()
        self.box3.set_name("box3")
        self.box.pack_start(self.box3, False, False, 0)

        self.text2 = Gtk.Label.new()
        self.text2.set_text('text2')
        self.box3.pack_start(self.text2, False, False, 0)

# Create and show window
win = MainWindow()
win.show_all()
Gtk.main()

但结果是:

box result

当然我可以在python代码中添加填充/间距值,但仅适用于没有嵌套框的水平间隙。没有硬编码可以用css-only解决方案吗?

1 个答案:

答案 0 :(得分:3)

现在不行。 GTK在其小部件上不支持margin属性,并且它仅支持绘制框架的小部件上的padding属性。 (哪些元素绘制框架可能有点随意,但Gtk.BoxGtk.Label没有,所以这就是为什么你的例子不起作用。你可以把它放在任何小部件上Gtk.Frame虽然。)

This blog post显示计划在即将到来的GTK 3.20中的所有小部件上始终支持marginpadding