Gegenwärtig nicht. Schaltflächen sind in Schuhen immer noch ziemlich unzuverlässig, besonders unter Windows. Sie können das Problem umgehen, indem Sie die Schaltfläche in einen Schlitz setzen und den Schlitz ein- oder ausblenden, aber Sie werden feststellen, dass sich die Schaltfläche nicht mehr ausblenden lässt, sobald sie einmal angeklickt wurde:
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
Glücklicherweise gibt es einen Ausweg: Spielautomaten. Schlitze können mit einem Klick-Ereignis versehen werden, wodurch sie sich ähnlich wie eine Schaltfläche verhalten. In der Tat können Sie ziemlich anständige Tasten aus Slots machen.
Hier ist etwas, das ich zusammengeschustert habe. Damit können Sie die pesto_button
Methode, um Schaltflächen zu erzeugen, die auf Flüssen basieren. Sie können sie an Ihre Bedürfnisse anpassen, z. B. mit einem Bild als Hintergrund, veränderbarem Text (mit automatisch expandierender Breite?), der Möglichkeit, Stile im laufenden Betrieb zu ändern, usw:
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