update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
|
|
@ -0,0 +1,47 @@
|
|||
using Tk
|
||||
w = Toplevel("Component Interaction Example")
|
||||
fr = Frame(w)
|
||||
pack(fr, {:expand=>true, :fill => "both"})
|
||||
## The task: For a minimal "application", write a program that
|
||||
## presents a form with three components to the user: A numeric input
|
||||
## field ("Value") and two buttons ("increment" and "random").
|
||||
|
||||
value = Entry(fr, "")
|
||||
increment = Button(fr, "Increment")
|
||||
random = Button(fr, "Random")
|
||||
|
||||
formlayout(value, "Value:")
|
||||
formlayout(increment, " ")
|
||||
formlayout(random, " ")
|
||||
|
||||
set_value(value, "0") ## The field is initialized to zero.
|
||||
|
||||
tk_bind(increment, "command") do path ## increment its value with the "increment" button.
|
||||
val = get_value(value) | float
|
||||
set_value(value, string(val + 1))
|
||||
end
|
||||
|
||||
|
||||
function validate_command(path, P)
|
||||
try
|
||||
if length(P) > 0 parsefloat(P) end
|
||||
tcl("expr", "TRUE")
|
||||
catch e
|
||||
tcl("expr", "FALSE")
|
||||
end
|
||||
end
|
||||
function invalid_command(path, W)
|
||||
println("Invalid value")
|
||||
tcl(W, "delete", "@0", "end")
|
||||
end
|
||||
|
||||
tk_configure(value, {:validate=>"key", :validatecommand=>validate_command, :invalidcommand=>invalid_command })
|
||||
|
||||
## Pressing the "random" button presents a confirmation dialog, and resets the field's value to a random value if the answer is "Yes".
|
||||
tk_bind(random, "command") do path
|
||||
out = Messagebox(w, "Randomize input", "Select a new random number?")
|
||||
if out == "ok"
|
||||
new_value = floor(100*rand(1))[1]
|
||||
set_value(value, string(new_value))
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#lang racket/gui
|
||||
|
||||
(define frame (new frame% [label "Interaction Demo"]))
|
||||
|
||||
(define inp
|
||||
(new text-field% [label "Value"] [parent frame] [init-value "0"]
|
||||
[callback
|
||||
(λ(f ev)
|
||||
(define v (send f get-value))
|
||||
(unless (string->number v)
|
||||
(send f set-value (regexp-replace* #rx"[^0-9]+" v ""))))]))
|
||||
|
||||
(define buttons (new horizontal-pane% [parent frame]))
|
||||
(define inc-b
|
||||
(new button% [parent buttons] [label "Increment"]
|
||||
[callback (λ (b e) (let* ([v (string->number (send inp get-value))]
|
||||
[v (number->string (add1 v))])
|
||||
(send inp set-value v)))]))
|
||||
(define rand-b
|
||||
(new button% [parent buttons] [label "Random"]
|
||||
[callback (λ (b e) (when (message-box "Confirm" "Are you sure?"
|
||||
frame '(yes-no))
|
||||
(send inp set-value (~a (random 10000)))))]))
|
||||
|
||||
(send frame show #t)
|
||||
Loading…
Add table
Add a link
Reference in a new issue