我希望能够在程序运行后动态更改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
开始之前应用它,这很好。但是在窗口启动后它没有任何效果。我已经在笔记本对象和页面内容上尝试了modify_bg
和modify_base
的组合,但没有效果。
是否有正确的方法来设置笔记本页面的颜色不是那么hackish,并且可以在主循环运行后应用?
答案 0 :(得分:2)
您的问题来自5年前,但我将举例说明如何使用最新版本的Ruby-GNOME2绑定。如果不是你,可能它仍然可以派给其他人:
shared_preload_libraries
按钮能够在主Gtk循环开始之后更改textview小部件颜色,如果这意味着你的意思。当然它也应该与笔记本小部件一起使用。
我不得不说我刚刚开始使用Ruby-GNOME2绑定,我不确定这是目前推荐的修改UI外观的方法,但它确实有效。