如何在Ruby Tk中绑定键事件

时间:2016-03-28 15:02:26

标签: ruby tk

我想在控制台中显示我在Tk窗口中按下的内容。

我写了以下代码:

require 'tk'

root = TkRoot.new
entry = TkEntry.new(root) do
  pack
end

entry.bind("Key", proc {p "key pressed"})
Tk.mainloop

如果我按任意键,它会显示key pressed

但我想显示我按下的键,而不是常量字符串。谁能帮帮我?

2 个答案:

答案 0 :(得分:4)

也许是我。将绑定更改为:

entry.bind("Key", proc{|k| p "key pressed #{k}"}, "%K")

根据格式,使用%A(ASCII码),%K(keysym name)或%N(keysym number)作为最后一个参数。

答案 1 :(得分:0)

我喜欢sawa的回复;这是复制/可粘贴示例:

require 'tk'

alias e puts

root = TkRoot.new
root.geometry('800x600+0+0')
entry = TkEntry.new(root) {
  pack
}
entry.bind('Key', proc {|this_key|
  e "This key was pressed: `#{this_key}`"
}, '%K')

Tk.mainloop