单击本机控件后为什么不调用keypress?

时间:2009-02-27 13:35:45

标签: ruby shoes

Shoes.app do
 keypress do |k|
    if k==:f1
      alert("Foo bar")
    end
  end
  button "foo"
end

按F1会弹出警告框,但是。一旦我点击按钮“foo”,即焦点变为应用程序中的本机控件。不再捕获按键事件。 有什么方法可以解决它?

我正在使用windows xp。

1 个答案:

答案 0 :(得分:2)

在撰写本文时,这仍是Windows上的Shoes中的一个错误。如果您能够清楚地重新绘制所有内容,那么您可以再次获得按键事件,例如:

Shoes.app do
    def drawbutton
        @holder.clear do
            button "foo" do
                drawbutton
            end
        end
    end

    @holder = stack 

    drawbutton

    keypress do |k|
        if k==:f1
            alert("Foo bar")
        end
    end
end

虽然这个技巧适用于您的问题中的示例,但我不确定它是否可以很好地转换为真正的应用程序。