1

loopユーザーが文字を入力するのを待つcommand_line (シェル)があります。ユーザーが何を入力したかによって、さまざまなことが起こりますが、ループはユーザーが「quit」と入力するまで常に続きます。1 つのコマンドだけで、靴のアプリを開きたいと思います。開くとうまくいきますが、閉じるとループが壊れてプロセスが終了します。プロセスを終わらせたくない。なんかこんな感じ…

def mainLoop()
  loop do
    print "Input word: "
    word = gets.chomp.split(' ')
    if word.length == 0
      launchShoesApp(word[0])
    end

    ...

  end
end

def create_gui(graph)
  Shoes.app { button "Push me" }
end

Shoes.app GUI を閉じると、プロセス全体が閉じます。どうすればこれを防ぐことができますか?

4

1 に答える 1

0

コマンドライン Ruby スクリプト コードと Shoes スクリプト コードを別のファイルに分けることをお勧めします。例:

#command-line.rb
def mainLoop()
 loop do
  print "Input word: "
  word = gets.chomp.split(' ')
  if word.length == 0
   #launchShoesApp(word[0])
   Process.spawn("ruby shoes-gui.rb") 
   # this will spawn up a process (opening your shoes app) without blocking this ruby script.
  end
 end  
end

と、

#shoes-gui.rb
require 'green_shoes'
Shoes.app { button "Push me" }

両方のファイルが同じフォルダーにあることを確認してください。また、'green_shoes' gem がインストールされていることを確認してください。green_shoes にまったく問題がなく、赤い靴のみを使用したい場合は、システム コマンドを変更できます。

from:
'ruby shoes-gui.rb'
to:
'yourpath/to/shoes shoes-gui.rb'

通常、Linux を使用している場合は home/username/.shoes/federales/shoes に実行可能ファイルがあり、Windows の場合は C ドライブにあります。

これはおそらくうまくいくはずです(私は自分のマシンでテストしました)。それが役に立てば幸い :)

于 2014-10-01T17:25:28.503 に答える