【问题标题】:How to get radio button selection in Rebol 3?如何在 Rebol 3 中获得单选按钮选择?
【发布时间】:2013-09-02 13:47:44
【问题描述】:

如何获取用户在单选按钮组中选择的值? 这是一个简单的代码,我应该添加什么才能检索用户选择? 我在文档中找不到它。

view [
    radio "First"
    radio "Second"
    radio "Third"
]

【问题讨论】:

    标签: rebol rebol3 r3-gui


    【解决方案1】:

    在 R3GUI 中,单选按钮按邻近度分组,您可以通过命名每个按钮来获取它们的值。

    view [ 
       r1: radio "one"
       r2: radio "two"
       r3: radio "three"
       button "show" on-action [ print get-face reduce [ r1 r2 r3 ]]
    ]
    

    您应该使用 get-face 并在支持时避免查看内部结构。

    【讨论】:

    • 如果我有很多单选按钮,每个按钮代表一个单词。我是否必须确定“真”在布尔值列表中的位置并将单词与我找到它的位置匹配?使用 sqlab 的第一个答案来简单地将变量设置为我需要的单词不是更好吗?
    • 如果它们是按邻近度分组的,为什么你需要给它们命名?
    • 这取决于你想做什么。如果您使用单选按钮在表单中设置标志,然后处理该表单,那么设置另一个标志似乎是多余的,因为已经捕获了状态。但是,如果您想根据选择动态地执行某些操作,请使用 on-action 块。您不需要命名它们,但这样做可以更轻松地使用 'get-face。否则,您将不得不导航到包含单选按钮的任何容器并遍历它们。
    • 我确实需要一个适合第一种情况的选择,但我不需要它作为“真”或“假”,而是作为许多可能的字符串之一。当我可以直接获取选定的字符串时,为什么还要麻烦获取布尔值列表?
    【解决方案2】:

    可能不是唯一的方法,但你可以设置一个外部变量,如

    x: 0  
    view [
      radio "First" on-action [set 'x 1]
      radio "Second" on-action [set 'x   2]
      radio "Third" on-action [set 'x 3]
    ]
    print x
    

    【讨论】:

    • 我更喜欢这个答案,因为您可以决定自定义值,并且您不必在视图部分之后添加代码来获取值。
    • 除了问题是获取单选按钮的值 :) 其他函数可以设置外部值。
    【解决方案3】:

    另一种方式

    view [
      r1: radio "First"
      r2: radio "Second"
      r3: radio "Third"
    ]
    print r1/state/value
    print r2/state/value
    print r3/state/value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2017-12-01
      • 1970-01-01
      • 2013-09-28
      • 2011-04-17
      • 2016-02-23
      • 2021-04-08
      相关资源
      最近更新 更多