【发布时间】:2017-07-08 17:12:19
【问题描述】:
我正在尝试使用 ruby Shoes 构建一个 GUI 来为我的桌面选择背景图像。由于我正在努力解决我的想法的特定部分,我将只描述问题部分,其余部分都很好。
这是我的 ruby Shoes 应用程序的代码:
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
以下是我启动我的 Shoes 应用时的结果:
在后台运行了一个不同的 ruby 脚本,它生成一个新的背景图像并将其存储为preview_desktop_pic。
所以当我点击Change image-按钮时,@img1 的路径得到调整,我看到了新图像:
result_after_clicking_change_button
到目前为止还不错。我的问题是,当我点击Change image-按钮再次时什么也没有发生。当然同时已经有一个新的图像preview_desktop_pic所以代码行
@img1.path = "/home/njutik/preview_destkop_pic"
每次我按下Change image-按钮时都会执行一次,应该会显示一张新图片,但什么也没有发生。即使我从文件夹中删除preview_desktop_pic,然后按Change image-按钮,仍然没有任何变化,我看到的只是第一次单击Change image-按钮后显示的相同图片。
所以我的问题是:我做错了什么,如何让鞋子应用在每次按下Change image 按钮时显示当前的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
但这也无济于事。我认为通过定义单例方法我会删除缓存。
任何进一步的提示都会很有帮助。
【问题讨论】: