Racket/Lille-GUI: Skillnad mellan sidversioner
Från Täpp-Anders
Hoppa till navigeringHoppa till sök
Skapade sidan med 'You just need to load an online application form with your nominal an emergency more, simply enable your lender understand . They will immediately sketch one by stage plan tha...' |
Anders (diskussion | bidrag) Skapade sidan med '<pre> #lang racket/gui ;;;;; ;; Riktigt Enkelt GUI-Demo implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;; ;; Skapa huvudfönstret (define frame (new frame% [label "Racket GUI Demo"] [width 520] [height 420])) ;; Meny (define menu-bar (new menu-bar% [parent frame])) (define menu-file (new menu% [label "Arkiv"] [parent menu-bar])) (new menu-item% [label "Öppna..."] [parent menu-file] [callback (λ (i e) (mess...' |
||
| Rad 1: | Rad 1: | ||
<pre> | |||
#lang racket/gui | |||
;;;;; | |||
;; Riktigt Enkelt GUI-Demo implementerad i Racket | |||
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se | |||
;;;;; | |||
;; Skapa huvudfönstret | |||
(define frame | |||
(new frame% | |||
[label "Racket GUI Demo"] | |||
[width 520] | |||
[height 420])) | |||
;; Meny | |||
(define menu-bar (new menu-bar% [parent frame])) | |||
(define menu-file (new menu% [label "Arkiv"] [parent menu-bar])) | |||
(new menu-item% [label "Öppna..."] [parent menu-file] | |||
[callback (λ (i e) (message-box "Öppna" "Filöppning simulerad"))]) | |||
(new menu-item% [label "Spara"] [parent menu-file] | |||
[callback (λ (i e) (message-box "Spara" "Filen sparad!"))]) | |||
(new separator-menu-item% [parent menu-file]) | |||
(new menu-item% [label "Avsluta"] [parent menu-file] | |||
[callback (λ (i e) (send frame show #f))]) | |||
(define menu-help (new menu% [label "Hjälp"] [parent menu-bar])) | |||
(new menu-item% [label "Om programmet"] [parent menu-help] | |||
[callback (λ (i e) (message-box "Om" "Racket GUI Demo\nPedagogisk exempel"))]) | |||
;; Lite layouting av dialogen | |||
(define main-panel | |||
(new vertical-panel% [parent frame] [spacing 12] [border 15])) | |||
;; Rubrik | |||
(new message% | |||
[parent main-panel] | |||
[label "Välkommen till Racket GUI-demo!"]) | |||
;; Input-fält, 2 st, namn och epost | |||
(define name-field | |||
(new text-field% [parent main-panel] [label "Namn:"] [init-value "Anna Andersson"])) | |||
(define email-field | |||
(new text-field% [parent main-panel] [label "E-post:"] [init-value "anna@example.com"])) | |||
;; Radio buttons för att välja färg | |||
(define color-group | |||
(new group-box-panel% [parent main-panel] [label "Favoritfärg"])) | |||
(define color-radio | |||
(new radio-box% [parent color-group] [label #f] | |||
[choices '("Röd" "Grön" "Blå" "Gul")] | |||
[style '(vertical)])) | |||
;; Knappar för rensa och skicka | |||
(define btn-panel | |||
(new horizontal-panel% [parent main-panel] [alignment '(center center)] [spacing 20])) | |||
(new button% [parent btn-panel] [label "Rensa"] | |||
[callback (λ (b e) | |||
(send name-field set-value "") | |||
(send email-field set-value "") | |||
(send color-radio set-selection 0))]) | |||
(new button% [parent btn-panel] [label "Skicka"] [style '(border)] | |||
[callback (λ (b e) | |||
(define name (send name-field get-value)) | |||
(define email (send email-field get-value)) | |||
(define color (list-ref '("Röd" "Grön" "Blå" "Gul") | |||
(send color-radio get-selection))) | |||
(message-box "Tack!" | |||
(format "Hej ~a!\n\nE-post: ~a\nFavoritfärg: ~a" | |||
name email color)))]) | |||
;; Centrera fönstret och starta GUI | |||
(send frame center) | |||
(send frame show #t) | |||
<pre> | |||
Nuvarande version från 5 april 2026 kl. 12.59
#lang racket/gui
;;;;;
;; Riktigt Enkelt GUI-Demo implementerad i Racket
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se
;;;;;
;; Skapa huvudfönstret
(define frame
(new frame%
[label "Racket GUI Demo"]
[width 520]
[height 420]))
;; Meny
(define menu-bar (new menu-bar% [parent frame]))
(define menu-file (new menu% [label "Arkiv"] [parent menu-bar]))
(new menu-item% [label "Öppna..."] [parent menu-file]
[callback (λ (i e) (message-box "Öppna" "Filöppning simulerad"))])
(new menu-item% [label "Spara"] [parent menu-file]
[callback (λ (i e) (message-box "Spara" "Filen sparad!"))])
(new separator-menu-item% [parent menu-file])
(new menu-item% [label "Avsluta"] [parent menu-file]
[callback (λ (i e) (send frame show #f))])
(define menu-help (new menu% [label "Hjälp"] [parent menu-bar]))
(new menu-item% [label "Om programmet"] [parent menu-help]
[callback (λ (i e) (message-box "Om" "Racket GUI Demo\nPedagogisk exempel"))])
;; Lite layouting av dialogen
(define main-panel
(new vertical-panel% [parent frame] [spacing 12] [border 15]))
;; Rubrik
(new message%
[parent main-panel]
[label "Välkommen till Racket GUI-demo!"])
;; Input-fält, 2 st, namn och epost
(define name-field
(new text-field% [parent main-panel] [label "Namn:"] [init-value "Anna Andersson"]))
(define email-field
(new text-field% [parent main-panel] [label "E-post:"] [init-value "anna@example.com"]))
;; Radio buttons för att välja färg
(define color-group
(new group-box-panel% [parent main-panel] [label "Favoritfärg"]))
(define color-radio
(new radio-box% [parent color-group] [label #f]
[choices '("Röd" "Grön" "Blå" "Gul")]
[style '(vertical)]))
;; Knappar för rensa och skicka
(define btn-panel
(new horizontal-panel% [parent main-panel] [alignment '(center center)] [spacing 20]))
(new button% [parent btn-panel] [label "Rensa"]
[callback (λ (b e)
(send name-field set-value "")
(send email-field set-value "")
(send color-radio set-selection 0))])
(new button% [parent btn-panel] [label "Skicka"] [style '(border)]
[callback (λ (b e)
(define name (send name-field get-value))
(define email (send email-field get-value))
(define color (list-ref '("Röd" "Grön" "Blå" "Gul")
(send color-radio get-selection)))
(message-box "Tack!"
(format "Hej ~a!\n\nE-post: ~a\nFavoritfärg: ~a"
name email color)))])
;; Centrera fönstret och starta GUI
(send frame center)
(send frame show #t)