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

Python 我可以仅使用CSS设置GtkBox边距/填充样式吗?,python,css,margin,padding,gtk3,Python,Css,Margin,Padding,Gtk3,如何使用GTK应用程序的CSS样式表制作这样的布局 下面是示例代码: #/usr/bin/python 导入gi gi.要求_版本(“Gtk”、“3.0”) gi.require_版本(“Gdk”、“3.0”) 从gi.repository导入Gtk、Gdk #主应用程序窗口 # ======================= 类主窗口(Gtk.Window): 定义初始化(自): Gtk.Window.\uuuu初始化\uuuuu(自) self.connect(“删除事件”,Gtk.mai

如何使用GTK应用程序的CSS样式表制作这样的布局

下面是示例代码:

#/usr/bin/python
导入gi
gi.要求_版本(“Gtk”、“3.0”)
gi.require_版本(“Gdk”、“3.0”)
从gi.repository导入Gtk、Gdk
#主应用程序窗口
# =======================
类主窗口(Gtk.Window):
定义初始化(自):
Gtk.Window.\uuuu初始化\uuuuu(自)
self.connect(“删除事件”,Gtk.main_退出)
self.set_名称(“主窗口”)
#从文件加载样式
cssProvider=Gtk.cssProvider()
cssProvider.load\u from\u路径('style.css'))
#获取默认显示的默认屏幕
screen=Gdk.screen.get_default()
#将存储影响小部件的样式信息的新对象
styleContext=Gtk.styleContext()
styleContext.add_provider_for_screen(screen,cssProvider,Gtk.STYLE_provider_PRIORITY_应用程序)
自我调整大小(200200)
#为其他长方体创建长方体
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_启动(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_启动(self.box3,False,False,0)
self.text2=Gtk.Label.new()
self.text2.set_text('text2')
self.box3.pack_start(self.text2,False,False,0)
#创建并显示窗口
win=主窗口()
赢,全力以赴
Gtk.main()
这里是CSS样式表,它将在HTML中工作

#box {
  background: blue;
  padding: 5px;
}

#box2 {
  background: red;
  margin: 5px;
}

#box3 {
  background: green;
  margin: 5px;
}
但结果是:


当然,我可以在python代码中添加填充/间距值,但仅适用于没有嵌套框的水平间距。是否可以不用硬编码,只使用css解决方案?现在不行。GTK不支持其小部件上的
margin
属性,它只支持绘制框架的小部件上的
padding
属性。(哪些元素绘制一个框架可能有点随意,但是
Gtk.Box
Gtk.Label
没有,所以这就是为什么您的示例不起作用。您可以通过将它放在
Gtk.frame
中在任何小部件上伪造它。)

揭示了
边距
填充
计划在即将推出的GTK 3.20中的所有小部件上得到一致的支持