我希望能够在ruby-gnome2程序运行后动态地改变笔记本页面的背景颜色。我只找到了一种设置背景颜色的方法:
# Some page contents, for the sake of example
box1 = Gtk::HBox.new(false, 2)
box1.pack_start(Gtk::Label.new("Page 1"))
box2 = Gtk::HBox.new(false, 2)
box2.pack_start(Gtk::Label.new("Page 2"))
notebook = Gtk::Notebook.new      # Create a notebook object
notebook.append_page(box1)        # Create a page with box1 as contents
notebook.append_page(box2)        # Create a page with box2 as contents
style = notebook.style            # Copy the currently applied style
style.set_bg(Gtk::STATE_NORMAL, bg.red, bg.green, bg.blue) # Update the bg color
notebook.style = style            # Set notebook's style to the updated object如果它是在Gtk.main被踢出之前应用的,这是很好的。但在窗口已经启动后,它将不起作用。我在notebook对象和页面内容上尝试了modify_bg和modify_base的组合,但都没有效果。
有没有一种合适的方法来设置笔记本页面的颜色,使其不那么粗糙,并且可以在主循环运行后应用?
发布于 2017-05-02 17:26:46
你的问题是5年前的,但我将给你一个例子,说明我是如何使用最新版本的Ruby-GNOME2绑定来做到这一点的。如果不是对你来说,也许对其他人来说也是有用的:
color = Gdk::Color.parse("#003366")
button1.signal_connect("clicked") {
   textview1.override_background_color(Gtk::StateFlags::NORMAL, Gdk::RGBA.new(color.red, color.green, color.blue))
}
Gtk.main该按钮能够在主Gtk循环启动后更改textview小部件的颜色,如果您是这个意思的话。当然,它也应该适用于notebook小部件。
我不得不说,我刚刚开始使用Ruby-GNOME2绑定,我不确定这是当前推荐的修改UI外观的方式,但它是有效的。
https://stackoverflow.com/questions/11751871
复制相似问题