1

我正在用 Ruby/Gtk 中的窗格创建一个应用程序。调整窗格大小时,我需要做一些事情。但我无法弄清楚要使用哪个信号。我认为它是'accept_position' - 但它似乎不起作用。这是一个示例应用程序,说明了我的问题......

#!/usr/bin/env ruby

require 'gtk2'

window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
window.set_title  "Panes"
window.border_width = 10
window.set_size_request(225, 150)
window.signal_connect('destroy') { Gtk.main_quit }
window.signal_connect('delete_event') { false }

button1 = Gtk::Button.new("Resize")
button2 = Gtk::Button.new("Me")

button1.signal_connect( "clicked" ) { window.destroy }
button2.signal_connect( "clicked" ) { window.destroy }

paned = Gtk::VPaned.new
paned.add1(button1)
paned.add2(button2)

paned.signal_connect( "accept_position" ) { 
 puts "hello"
 false
}

window.add(paned)
window.show_all
Gtk.main 

'accept_position' 调用永远不会被触发。知道是什么导致了这个/如何解决它吗?

4

1 回答 1

3

'accept_position'是一个键绑定信号,仅在使用键盘调整窗格大小时发出。

我不知道 Ruby,但在 C 中你想要的信号是'notify::position'. notify是一个GObject在属性改变其值时触发的信号。如果在连接信号名称时向信号名称添加详细信息,例如position,则仅当该特定属性更改其值时才会触发。

于 2009-11-11T20:51:32.460 回答