从另一个文件中获取Shoes编辑框的文本字符串



我的应用程序在Shoes 3上运行,由以下代码组成

require 'somefile'
Shoes.app do
stack do
flow do
@my_editbox = edit_line
end
flow do 
button "Get Name" do
@my_editbox.text = "#{@name}"
end
end
end
end

用我的外部文件somefile.rb保存

@name = "my name"

单击该按钮什么也不做,我的编辑框保持为空。感谢您的帮助!

鞋子不是这样工作的。鞋子不是鲁比,它只是看起来像鲁比。您知道在Ruby中工作的许多东西在Shoes中根本不起作用,因为Shoes是一个用C编写的工具包,它将通过直接调用Ruby API以Ruby风格工作。

require调用是无法按预期方式工作的事情之一。Shoes网站上有一个关于这些规则的解释,非常令人困惑。

就我个人而言,我发现鞋子太令人沮丧了,而且记录得很差,即使在使用方式极其有限的情况下,它也不值得使用。祝你好运

更新

你在下面询问了"如何"。我想你的意思是,如何在Shoes应用程序中正确使用require从单独的文件加载代码。

以这个回购为例。你可以构建一个普通的Ruby类,然后在你的应用程序中require这个类。您可以在Shoes.app do块中以普通Ruby方式使用该类。但是(据我所知(由于self在块中的变化方式,您无法引入类/模块之外的独立实例变量。

不过,你可以做这样的事情,而且它确实以你期望的方式工作:

# foo.rb
module Foo
@@name = 'foobar'
end

# test.rb
require './foo.rb'
Shoes.app do
stack do
flow do
@my_editbox = edit_line
end
flow do 
button "Get Name" do
@my_editbox.text = Foo.class_variable_get(:@@name)
end
end
end
end

在这里,我创建了一个带有类变量的模块,因为在没有实例化的东西中使用实例变量是没有意义的。

当然还有其他方法可以做到这一点,你可能会在GitHub上找到其他例子(尽管你可能需要调整查询以获得更多结果(,但这是一个完成你概述的任务的功能性例子。

相关内容

  • 没有找到相关文章

最新更新