由于Gtk的Toolbar内部接口发生了一些变化,在使用Gtk::Toolbar#append时可能会发生问题。
当你在一个Gtk::Toolbar里面混合用:
与:
那么就会得到:
[quote]Gtk-WARNING **: mixing deprecated and non-deprecated GtkToolbar API is not allowed[/quote]
这样的警告。这种警告不可忽视,因为以后会由警告变成错误。
这个问题在RubyGnome的网站上并没有提及,而且要注意的是,RubyGnome网站上的API参考中,有不少已经是被废弃了的接口还依然列在那里。google那条警告信息可以看到很多人都碰到过这个问题,包括Gtk的Python binding也同样受到影响。但对于怎么解决这个问题并没有非常清晰的解答。
经过摸索,以及参考Python/GTK的文档,得到正确的做法是:在同一个Gtk::Toolbar里面,只能都用Gtk::Toolbar#append(stock_id),或者都用Gtk::Toolbar#append(widget),碰到需要混用的场合,例如需要加入Gtk::ToggleToolButton,那么就应该统一用Gtk::Toolbar#insert,这样就可以解决警告信息的问题。
当你在一个Gtk::Toolbar里面混合用:
Gtk::Toolbar#append(stock_id)
与:
Gtk::Toolbar#append(widget)
那么就会得到:
[quote]Gtk-WARNING **: mixing deprecated and non-deprecated GtkToolbar API is not allowed[/quote]
这样的警告。这种警告不可忽视,因为以后会由警告变成错误。
这个问题在RubyGnome的网站上并没有提及,而且要注意的是,RubyGnome网站上的API参考中,有不少已经是被废弃了的接口还依然列在那里。google那条警告信息可以看到很多人都碰到过这个问题,包括Gtk的Python binding也同样受到影响。但对于怎么解决这个问题并没有非常清晰的解答。
经过摸索,以及参考Python/GTK的文档,得到正确的做法是:在同一个Gtk::Toolbar里面,只能都用Gtk::Toolbar#append(stock_id),或者都用Gtk::Toolbar#append(widget),碰到需要混用的场合,例如需要加入Gtk::ToggleToolButton,那么就应该统一用Gtk::Toolbar#insert,这样就可以解决警告信息的问题。