gpt4 book ai didi

ruby - 如何在 Shoes 中创建隐藏按钮?

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:15 26 4
gpt4 key购买 nike

在 Shoes 中,我想创建一个最初隐藏的按钮。我试过将 :hidden => true 作为按钮样式的一部分传递,并在创建它后调用 @button.hide(),但它仍然顽固地可见。

我已经能够通过不创建按钮直到我想要它显示来解决这个问题,但这需要检查它是否已经存在,而不是仅仅使用它。

最佳答案

目前没有。 Shoes 中的按钮仍然相当不可靠,尤其是在 Windows 上。您可以通过将按钮放在插槽中并隐藏或显示插槽来解决此问题,但您可能会发现按钮一旦被单击一次就不会再次隐藏:

Shoes.app do
para 'This is some text.'

@flow = flow :width => 50, :hidden => true do
button 'a' do |btn|
alert 'Hello, World!'
end
end

button 'toggle' do
@flow.toggle
end
para 'Blah blah blah'

end

幸运的是,有一条出路:插槽。插槽可以被赋予一个点击事件,这使得它们的行为很像一个按钮。事实上,您可以用插槽制作相当不错的按钮。

这是我拼凑的东西。它允许您使用 pesto_button 方法生成基于流的按钮。您可以修改它以满足您的需要,包括使用图像作为背景、可修改的文本(具有自动扩展宽度?)、即时更改样式的能力等:

class PestoButton < Widget
def initialize (text, opts = {})
@border_color = opts[:border_color] || gray
@border_width = opts[:border_width] || 3
@color = opts[:up_color] || gainsboro
@click_color = opts[:down_color] || @border_color
@width = opts[:width] || 80
@click = block_given? ? Proc.new { yield } : nil
@text = text
@visible = true
@flow = flow :width => @width do
background @color
border @border_color, :strokewidth => @border_width
para @text, :align => 'center'
end

@flow.click do
@flow.clear
@flow.append do
background @click_color
border @border_color, :strokewidth => @border_width
para @text, :align => 'center'
end
end

@flow.release do
@flow.clear
@flow.append do
background @color
border @border_color, :strokewidth => @border_width
para @text, :align => 'center'
@click.call if @click
end
end
end

def click
@click = block_given? ? Proc.new { yield } : nil
end

def show
@flow.show
end

def toggle
@flow.toggle
end

def hide
@flow.hide
end
end

Shoes.app do
para 'This is some text.'
@btn = pesto_button 'Click me!' do
alert 'Hello, World!'
end

button 'toggle' do
@btn.toggle
end

button 'new block' do
@btn.click do
alert 'Goodbye, World!'
end
end

button 'no block' do
@btn.click #Clears the click method
end

para 'Blah blah blah'
end

关于ruby - 如何在 Shoes 中创建隐藏按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1253093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com