我想拥有一个仅接受数字值的TkEntry,但我不知道该怎么做。
:validatecommand
仅在初始化TkEntry时被调用一次,我不知道如何正确传递参数!
这是一个说明我的问题的示例文件:
require 'tk'
# validation method
def isNumerical?
return false # i plan to actually do something here once i can get a variable in
end
def initWindow
@root = TkRoot.new {
title "Bluebird"
minsize 400, 300
setgrid
}
entry = TkEntry.new(
@root,
:width=>5,
:textvariable=>TkVariable.new("2241"),
:validate=>"key",
:validatecommand=>proc{isNumerical?}
).grid(:column=> 0, :row=> 0)
end
initWindow
Tk.mainloop
答案 0 :(得分:0)
当初始化TkEntry [。]时,:validate命令仅被调用一次。
不是!
我不知道如何在[。]中正确传递参数。
我最小化了您的程序,以便将参数传递给其验证方法并打印输入字符串:
require 'tk'
# validation method
def isNumerical?(s)
puts s
# return false # i plan to actually do something here once i can get a variable in
return true
end
def initWindow
@root = TkRoot.new {
title "Bluebird"
minsize 400, 300
setgrid
}
entry = TkEntry.new(
@root,
:width=>5,
:textvariable=>TkVariable.new("2241"),
:validate=>"key",
:validatecommand=>[proc{|s| isNumerical?(s)}, "%P"]
).grid(:column=> 0, :row=> 0)
end
initWindow
Tk.mainloop
顺便说一句,我认为您会发现这些有用: