私はGenieでGtk.CssProviderを使用して、ボタンとウィンドウにスタイルを追加しています。Gtk.CssProvider in Genie
スタイルシートプロパティがボタンにのみ適用され、別のプロパティがウィンドウにのみ適用されるように指定する方法はわかりません。
var css = "" "
Gtk.Button {background: # FFFF00; }
Gtk.ApplicationWindow {background: green; }
"" "
私はいくつかの同様のことを試みましたが、どれも私のために働いていませんでした。たぶんset_name?今私はこの解決策を発見した(不正なコードをしかし、それは動作します)については
:
// compila con valac --pkg gtk+-3.0 nombre_archivo.gs
uses Gtk
init
new MyApplication("test.application",
ApplicationFlags.FLAGS_NONE
).run(args)
class MyApplication:Gtk.Application
construct(application_id:string, flags:ApplicationFlags)
if !id_is_valid(application_id)
error("application id %s is not valid", application_id)
this.application_id = application_id
this.flags = flags
def override activate()
var window = new Gtk.ApplicationWindow(this)
window.window_position = WindowPosition.CENTER
window.set_border_width(10)
var grid = new Gtk.Grid()
var boton1 = new Gtk.Button()
boton1.label = "Boton 1"
boton1.margin = 10
var boton2 = new Gtk.Button()
boton2.label = "Boton 2"
boton2.margin = 10
var css_b = "* { background: #FFFF00; }"
var css_w = "* { background: green; }"
var provider_b = new Gtk.CssProvider()
var provider_w = new Gtk.CssProvider()
try
provider_b.load_from_data(css_b, css_b.length)
provider_w.load_from_data(css_w, css_w.length)
except e: GLib.Error
stderr.printf ("Hoja de estilo no cargada: %s\n", e.message)
boton1.get_style_context().add_provider (provider_b, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
window.get_style_context().add_provider (provider_w, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
grid.attach(boton1, 0, 0, 2, 1)
grid.attach_next_to (boton2, boton1, Gtk.PositionType.RIGHT, 2, 1)
window.add(grid)
window.show_all()
EDIT:
問題は、これが動作することである:
var css = """
* {background: #FFFF00; }
"""
var provider = new Gtk.CssProvider()
try
provider.load_from_data(css, css.length)
except e: GLib.Error
stderr.printf ("Hoja de estilo no cargada: %s\n", e.message)
Gtk.StyleContext.add_provider_for_screen (
Gdk.Screen.get_default(),
provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
これは機能しません:
var css = """
GtkButton {background: #FFFF00; }
"""
var provider = new Gtk.CssProvider()
try
provider.load_from_data(css, css.length)
except e: GLib.Error
stderr.printf ("Hoja de estilo no cargada: %s\n", e.message)
Gtk.StyleContext.add_provider_for_screen (
Gdk.Screen.get_default(),
provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)