如何在 Ruby Shoes GUI 中将函数与对象绑定?

How can I bind function with object in Ruby Shoes GUI?

如何只在按下回车键时才调用加法 并且 @e_ln1 处于焦点?如果我在 @e_ln2 处于焦点时单击 enter,也会执行 @e_ln1 中的添加,但我不想要它。

Shoes.app do

    @e_ln1 = edit_line(width: 150, height: 20)
    @e_ln2 = edit_line(width: 150, height: 20, left: 0, top: 60)

   keypress do |k|
        if k == "\n" 
            @e_ln1.text = @e_ln1.text.to_i + 1
        end
    end

end

据我所知,目前在第 3 版和第 4 版中,这是不可能的。在第 4 版中,甚至存在一个错误,即当焦点位于输入字段时我们无法获得按键。抱歉:-/

我现在没有鞋子 3 运行,但你可以查看并检查“\n”是否到达输入字段并据此进行检查。

要不然我开个Shoes 4 issue给implement a focussed? method

Shoes3.3.1 在 edit_line

上有一个完成事件
Shoes.app do
    @e_ln1 = edit_line(width: 150, height: 25)
    @e_ln2 = edit_line(width: 150, height: 25, left: 0, top: 60)

    @e_ln1.finish = proc { @e_ln1.text = @e_ln1.text.to_i + 1 }
end

只需在感兴趣的 edit_line 中按回车键即可触发它