私はデスクトップの背景イメージを選択するためにRuby ShoesでGUIを構築しようとしています。私は私のアイデアの特定の部分で苦労しているので、私は問題の部分だけを説明するつもりです、残りはうまく動作します。ここでRuby:イメージが変更された後にイメージのパスを更新するには?
は私のルビーの靴アプリのコードです:
Shoes.app :title => "Images!" do
stack do
@img1 = image "desktop_pic", :width => 200, :height => 100
button "Change image", :margin => 25 do
@img1.path = "/home/njutik/preview_desktop_pic"
end
end
end
は、ここで私は私の靴アプリを起動したときの結果は次のようになります。バックグラウンドで
異なるルビーがあります新しい背景画像を生成し、それをpreview_desktop_pic
として保存するスクリプト実行。
私はChange image
- ボタンをクリックしたときので、@img1
のパスを調整しますと、私は新しいイメージを参照してください。
result_after_clicking_change_button
これまでのところ大丈夫です。私の問題は、Change image
- ボタン,をクリックすると何も起こりません。もちろん、その間にすでにので、新しいイメージpreview_desktop_pic
私に新しい画像を表示する必要があり、私はChange image
- ボタンを押すたびに実行されますが、何も起こりませんされているコードの行
@img1.path = "/home/njutik/preview_destkop_pic"
あります。フォルダからpreview_desktop_pic
を削除してからChange image
ボタンを押しても、変更は全くなく、最初にChage image
ボタンをクリックした後に表示される画像は同じです。
私は間違っていますか?Change image
ボタンを押すたびにShoesアプリに現在のpreview_desktop_pic
を表示させるにはどうすればよいですか?
ヒントは本当に素晴らしいでしょう。
更新:7studのコメントの後、ボタンのシングルトンメソッドを定義しようとしました。このように:
@change_image = button "Change image"
def @change_image.click
@img1.path = "/home/njutik/preview_login_background"
end
@change_image.click
しかし、それは役に立たなかった - 何も変わっていない。 私はこれを試しました:
def @img1.reload
@img1.path = "/home/njutik/preview_login_background"
end
button "Change image" do
@img1.reload
end
しかしこれも助けになりませんでした。シングルトンメソッドを定義することでキャッシュメモリを削除すると思っていました。
これ以上のヒントがあれば、本当に役に立ちます。
ありがとうございました! 「画像を変更」ボタンをクリックするたびにキャッシュを消去する方法はありますか? – Njutik