用 Red 语言打印出所有 GUI 元素的文本

Printing out text of all GUI elements in Red language

我正在尝试从以下代码中的所有 GUI 元素打印出文本:

  sentlist: ["A" "B" "C"]

  main: function [slist] [
      view collect [
          repeat i length? slist [
              keep compose [
                  text (slist/:i)
                  field "" 
                  return ]]
          keep [button "Printall" [
              repeat i (2 * length? slist)[
                  print face/parent/pane/(i)/text  ]]]]]

 (main sentlist) 

它运行正常,没有任何错误,并且 text 元素的文本被正确打印出来,但是对于 fields,每个字段只打印最后一个字段的条目。问题出在哪里,如何解决?感谢您的帮助。

在您的规范中 field "" 对每个字段重复使用相同的字符串。更改一个字段会更改每个字段的文本(可能出于效率原因,这未反映在 GUI 中)。您可以将该行更改为 field (copy "") 以提供唯一的字符串。