RubyTk中如何绑定按键事件
How to bind a key event in Ruby Tk
我想在控制台中显示我在 Tk 中按下的内容 window。
我写了下面的代码:
require 'tk'
root = TkRoot.new
entry = TkEntry.new(root) do
pack
end
entry.bind("Key", proc {p "key pressed"})
Tk.mainloop
按任意键显示key pressed
但我想显示我按下的键,而不是常量字符串。谁能帮帮我?
也许是我。将绑定更改为:
entry.bind("Key", proc{|k| p "key pressed #{k}"}, "%K")
根据格式,使用 %A
(ASCII 代码)、%K
(密钥符号名称)或 %N
(密钥符号编号)作为最后一个参数。
我喜欢sawa的回复;这是 copy/pasteable 示例:
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
我想在控制台中显示我在 Tk 中按下的内容 window。
我写了下面的代码:
require 'tk'
root = TkRoot.new
entry = TkEntry.new(root) do
pack
end
entry.bind("Key", proc {p "key pressed"})
Tk.mainloop
按任意键显示key pressed
但我想显示我按下的键,而不是常量字符串。谁能帮帮我?
也许是我。将绑定更改为:
entry.bind("Key", proc{|k| p "key pressed #{k}"}, "%K")
根据格式,使用 %A
(ASCII 代码)、%K
(密钥符号名称)或 %N
(密钥符号编号)作为最后一个参数。
我喜欢sawa的回复;这是 copy/pasteable 示例:
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