Ruby TK如何获取TkSpinbox控件的用户输入值
Ruby TK Spinbox 用户输入值获取方案
原代码问题
TkVariable定义在Spinbox初始化块内部,作用域受限,外部代码无法访问- 未将
TkVariable绑定到Spinbox的textvariable属性,变量和组件未建立同步关联 increment参数用法错误,无需传入计算表达式,直接指定步长数值即可
修正实现代码
# 提前在外部定义TkVariable,保证作用域覆盖所有需要使用该值的代码范围 spin_value = TkVariable.new(1) # 可指定默认初始值 TkSpinbox.new(left) do from 1 to 100 increment 1 # 直接设置步长为1 textvariable spin_value # 绑定变量后,Spinbox值变化会自动同步到该变量 command proc { # 实时打印当前值,调用.value即可获取组件内的输入值 puts "当前选择值:#{spin_value.value}" } pack("side" => "bottom", "padx" => "50", "pady" => "54") end # 其他位置需要取值时直接调用即可,示例:按钮点击时取值 TkButton.new(left, text: "确认取值") do command proc { target_num = spin_value.value.to_i # 按需转换为整数类型使用 # 此处可直接将target_num传入其他业务逻辑使用 } pack("side" => "bottom") end
注意事项
只要
spin_value变量的作用域可以被业务逻辑代码访问到,就可以随时调用.value获取Spinbox的最新值,不需要额外做值同步操作,绑定textvariable后变量会自动和组件输入保持同步。
对应GUI界面

内容的提问来源于stack exchange,提问作者Hon Wi Cong
相关产品推荐
相关产品推荐

