2015-11-21 32 views
3

如何使用CSS樣式表爲GTK應用程序製作這樣的佈局?我可以使用CSS設計GtkBox邊距/填充嗎?

box needle

下面是示例代碼:

#!/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() 

下面是該將在HTML

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

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

#box3 { 
    background: green; 
    margin: 5px; 
} 

但結果工作CSS樣式表:

box result

當然,我可以在Python代碼中添加填充/間距值,但僅限於沒有嵌套框的水平間距。無需硬編碼,只用css解決方案就可以完成這項工作嗎?

回答

3

不是現在。 GTK在其窗口小部件上不支持margin屬性,並且它僅在繪製窗口的窗口小部件上支持padding屬性。 (哪些元素畫一個框架可能有點武斷,但Gtk.BoxGtk.Label不這樣做,所以這就是爲什麼你的榜樣是行不通的。你可以僞造它,將其置於一個Gtk.Frame裏面雖然任何部件。)

This blog post顯示marginpadding計劃在即將推出的GTK 3.20中的所有小部件上一致支持。