3

我希望能够在程序运行后动态更改 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

有没有合适的方法来设置笔记本页面的颜色,它不是那么骇人听闻,并且可以在主循环运行后应用?

4

1 回答 1

2

你的问题是 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 小部件颜色。当然,它也应该与笔记本小部件一起使用。

我不得不说我刚开始使用 Ruby-GNOME2 绑定,我不确定这是目前推荐的修改 UI 外观的方法,但它确实有效。

于 2017-05-02T09:26:46.433 回答