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

按 F1 会弹出警告框,但是。一旦我单击按钮“foo”,即如果焦点更改为应用程序中的本机控件。不再捕获按键事件。有什么办法绕过它?

我用的是windows xp。

4

1 回答 1

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

尽管此技巧适用于您问题中的示例,但我不确定它能否很好地转化为真正的应用程序。

于 2010-01-18T11:35:21.383 回答