我似乎找不到有关更改Julia上GTK 按钮颜色的任何文档。我无法在GTK 软件包中获得 @ gtkstylecontext。所以我在这里尝试了以下示例:
obj = GtkButtonLeaf("test")
context = ccall((:gtk_widget_get_style_context,libgtk),Ptr{GObject},(Ptr{GObject},),obj)
provider = ccall((:gtk_css_provider_get_default,libgtk),Ptr{GObject},())
filename = "C:/Users/Administrator/Documents/CMPT276_a5_copy/theme.css"
GError() do error_check
ccall((:gtk_css_provider_load_from_path,libgtk), Bool,
(Ptr{GObject}, Ptr{UInt8}, Ptr{Ptr{GError}}),
provider, bytestring(filename), error_check)
end
ccall((:gtk_style_context_add_provider,libgtk),Void,(Ptr{GObject},Ptr{GObject},Cuint),
context,provider,priority)
代码没有任何错误编译,但按钮什么也没有发生。CSS_PROVIDER_LOAD_FROM_PATH()是否不加载.css文件?这是我能想到的唯一原因。任何帮助将不胜感激!
编辑:
priority = 1.
theme.css:
GtkButton{
color: red;
}
这有效:
using GTK3_jll
const libgtk = libgtk3
using Gtk, Gtk.ShortNames
function set_gtk_style!(widget::Gtk.GtkWidget, style::String, value::Int=600) # thank to MeteorBizone
sc = Gtk.GAccessor.style_context(widget)
pr = Gtk.CssProviderLeaf(data=style)
push!(sc, Gtk.StyleProvider(pr), value)
end
g = GtkGrid()
fg_win = GtkWindow( "Try Button")
btn = GtkButton("u22EF Push u22EF")
set_gtk_style!(btn,".text-button {font: 20px "sans";color:red}",600)
g[1,1] = btn
push!(fg_win,g)
showall(fg_win)
我填充了类text_button
。