从命令proc内更改标签文本

问题描述 投票:0回答:1

我已经预先创建了一个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的新手。

ruby tk
1个回答
0
投票

问题上下文(无法引用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)
© www.soinside.com 2019 - 2024. All rights reserved.