我已经预先创建了一个TkLabel,现在我想在命令proc中更新其text变量。唯一的问题是NameError: unknown option 'codelabel' for #<Tk::Button:0x00000000050797e8 @path=".w00003"> (deleted widget?)
。
似乎无法从命令proc中引用label变量。这是分配的正确方法吗?
TkButton.new(root){
text "GET"
#command proc { p txthost.value; p txtpath.value;exit }
command proc{
rc.get_method(txthost.value,txtpath.value);
txtcode.value=rc.code;
txthtml.value=rc.html;
codelabel.text=txtcode.value #label text updated here
}
pack('side'=>'bottom', 'padx'=>10, 'pady'=>10)
}
有什么建议吗?原谅我,对于这个问题,我是Ruby的新手。
问题上下文(无法引用label变量)不是命令proc。相反,出乎意料的是,这是整个代码块传递给TkButton.new
。
通常来说,解决此问题的最佳方法是首先避免将代码块传递给TkButton.new
,如下所示:
b = TkButton.new(root)
b.text "GET"
#command proc { p txthost.value; p txtpath.value;exit }
b.command proc{
rc.get_method(txthost.value, txtpath.value)
txtcode.value = rc.code
txthtml.value = rc.html
codelabel.text = txtcode.value #label text updated here
}
b.pack('side'=>'bottom', 'padx'=>10, 'pady'=>10)