ruby - Ruby TK 如何接收用户的输入?
问题描述
我是 Ruby 新手,我希望收到来自 Ruby TK 用户的意见。互联网上关于这方面的信息太少了。所以我在这里寻找解决方案。以下是我正在使用的当前方法。
TkSpinbox.new(left) do
to 100
from 1
value = TkVariable.new()
increment value += 1
command (proc{
puts value
})
pack("side" => "bottom", "padx"=> "50", "pady"=> "54")
end
解决方案
您可以对该代码片段进行一些小的更改,以使您可以正确访问 spinbox 值:
该
increment
方法采用一个参数,即每次单击按钮时增加值的量。所以你可以increment value += 1
用 just替换increment 1
。您不需要这
value = TkVariable.new()
条线,因为它TkSpinbox
会跟踪其价值本身。(如果你确实想设置一个初始值,你会使用 egself.value = 10
。)
进行这些更改后,这是最终的代码片段:
TkSpinbox.new(left) do
to 100
from 1
increment 1
# Equivalent to your proc({...}) usage here, but this is better Ruby style
command do
puts value
end
pack("side" => "bottom", "padx"=> "50", "pady"=> "54")
end
以下是您多次单击增量按钮时的外观:
要使用来自其他控件(如按钮)的值,您可以将您的值分配TkSpinbox
给一个变量并从另一个command
块访问它的值:
# Assign spinbox to a variable named `spinbox`
spinbox = TkSpinbox.new(left) do
to 100
from 1
increment 1
command do
puts value
end
pack("side" => "bottom", "padx"=> "50", "pady"=> "54")
end
TkButton.new(left) do
text "Do something with the value"
command do
# Now `spinbox` is usable from other controls
# (The value may be a string, so we use .to_i to convert to an integer)
puts spinbox.value.to_i * 100
end
pack("side" => "top")
end
推荐阅读
- javascript - 这个css声明的结果?
- c# - 当属性具有 IDictionary 时反序列化对象
- python - 划分列、矩阵的迭代
- javascript - 如何在不影响 SEO 的情况下使用 wow.js 和 animate.css?
- java - java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库“libpthread.so.0”
- r - 如何将值列表读入沙箱中的数据表?
- node.js - npm root:没有这样的文件或目录
- visual-studio-extensions - 带有自定义命令和子命令的 Visual Studio 扩展
- javascript - 如何使用 squirrel.windows 创建注册表项
- docker - 运行容器时如何使用 docker 主机名