-2

の選択に基づいて、条件ステートメントから整数を取得しようとしていlist_boxます。それを機能させることはできません。また、削除できるようにしたい@acuity = paraです。私のコードはこれに基づいています: list_box will not use default value on startup - Shoes.

Shoes.app :title=> 'Procedural', :width => 300, :height => 200 do 

@list_box = list_box :items => ["1- Ad lib", "2- Assist of SB", "3- Assist of 1", "4- Assist of 2"]                        

   button 'Compute' do
        @acuity.text = @list_box.text
  if @acuity == "1- Ad lib"
        @mobility = 11
  elsif @acuity == "2- Assist of SB"
        @mobility = 22
  elsif @acuity == "3- Assist of 1"
    @mobility = 33
  elsif @acuity == "4- Assist of 2"
    @mobility = 44
  end

      end

    @acuity = para

    end
4

1 に答える 1

2

あなたの目標が何であるかは明らかではありません。@mobility をどこかに表示するには?@mobility 変数に値を代入するだけでは何も起こりません。

Shoes.app do

  @choice_map = {
    "1- Ad lib"       => 11,
    "2- Assist of SB" => 22,
    "3- Assist of 1"  => 33,
    "4- Assist of 2"  => 44
  }

  para "Choose item:"
  @my_listbox = list_box(:items => @choice_map.keys) 

  button 'Compute' do
    @mobility = @choice_map[@my_listbox.text]
  end

end

@mobility に正しい値が含まれていることを証明するには、値をどこかに表示する必要があります。

Shoes.app do

  @choice_map = {
    "1- Ad lib"       => 11,
    "2- Assist of SB" => 22,
    "3- Assist of 1"  => 33,
    "4- Assist of 2"  => 44
  }

  @my_listbox = list_box(items: @choice_map.keys)

  @my_para = para 'show computed results here'

  button 'Compute' do
    @mobility = @choice_map[@my_listbox.text]
    @my_para.text = @mobility
  end

end

あなたのコードは実際にはマイナーな変更でうまく動作します:

Shoes.app :title => 'Procedural', :width => 300, :height => 200 do 

@list_box = list_box :items => ["1- Ad lib", "2- Assist of SB", "3- Assist of 1", "4- Assist of 2"]                        

@my_para = para 'show computed results here'

button 'Compute' do
  @acuity = @list_box.text   #<---CHANGE HERE

  if @acuity == "1- Ad lib"
    @mobility = 11
  elsif @acuity == "2- Assist of SB"
    @mobility = 22
  elsif @acuity == "3- Assist of 1"
    @mobility = 33
  elsif @acuity == "4- Assist of 2"
    @mobility = 44
  end

  @my_para.text = @mobility

end

ボタンが不要な場合:

Shoes.app do

  @choice_map = {
    "1- Ad lib"       => 11,
    "2- Assist of SB" => 22,
    "3- Assist of 1"  => 33,
    "4- Assist of 2"  => 44
  }

  para "Choose item:"

  @default = "2- Assist of SB"
  @mobility = @choice_map[@default]

  @my_listbox = list_box(items: @choice_map.keys, choose: @default) do |list|
    @mobility = @choice_map[list.text]
  end

end

list_box() に指定されたブロックは onchange でのみ実行されるため、@mobility の初期値を設定する必要があります。

次のようなものがリストボックスの初期値を取得できると思うでしょう:

Shoes.app do

  @choice_map = {
    "1- Ad lib"       => 11,
    "2- Assist of SB" => 22,
    "3- Assist of 1"  => 33,
    "4- Assist of 2"  => 44
  }

  para "Choose item:"

  @my_listbox = list_box(items: @choice_map.keys) do |list|
    @mobility = @choice_map[list.text]
    @my_para.text = @mobility
  end

  @mobility = @choice_map[@my_listbox.text]
  @my_para = para @mobility 
end

しかし、アプリ ブロックの実行が終了するまでリストボックスは存在しないようです。そのため、アプリ ブロック内の @my_listbox.text を取得することはできません。

于 2013-07-21T18:37:21.077 に答える