La prova finestra – 1

627Provo a far pratica con la GUI, costruisco –forse, se ci riesco– una finestra con qualche widget dentro.
Ecco il mio primo tentativo, quasi tutto finto (cioè i widgets non rispondono) ma, al solito mi sono perso per la form [alignment '(center center)], non capivo l’istruzione

alignment : (list/c (or/c 'left 'center 'right)
                    (or/c 'top 'center 'bottom))
          = '(left center)

e pensare che c’era la soluzione dopo = 🙄
In ogni caso ecco p0.rkt:

#lang racket/gui

(define frame (new frame% [label "prova"]
                   [min-width 200]
                   [min-height 100]))

(define r-buttons (new horizontal-panel% 
                       [parent frame]
                       ;[style (list 'center)]
                       [border 10]
                       [alignment '(center center)]
                       ))

(new button% [parent r-buttons]
     [label "exec"]
     [min-width 50]
     [enabled #t])

(new button% [parent r-buttons]
     [label "close"]
     [min-width 50]
     [enabled #t])

(define display$ (new text-field%
                      (label "")
                      (parent frame)
                      (init-value "pronto")))

(send frame show #t)

p0

Da terminale si può lanciare sia con gracket p0.rkt che con racket p0.rkt; almeno non ho trovato differenze, chissà…

Adesso viene il difficile: il pulsante exec dovrebbe lanciare un’applicazione, dunque vediamo… ah, sì, gnome-system-monitor 😆
UEPP! troppo facile, ecco come correggere il pulsante exec:

(new button% [parent r-buttons]
     [label "exec"]
     [min-width 50]
     [enabled #t]
     [callback (lambda (button event)
                 (subprocess #f #f #f "/usr/bin/gnome-system-monitor")
                 (send display$ set-value "exec"))])

Chissà per chiudere l’app? Troppo facile:

(new button% [parent r-buttons]
     [label "close"]
     [min-width 50]
     [callback (lambda (button event)
                 (exit 1))])

E adesso un’ultima modifica, chissà… sì:

#lang racket/gui

(define window-style '(no-caption #|float|#)) ; me l'ha detto Eli

(define frame (new frame% [label "prova"]
                   [min-width 200]
                   [min-height 100]
                   [style window-style]))

(define r-buttons (new horizontal-panel% 
                       [parent frame]
                       ;[style (list 'center)]
                       [border 10]
                       [alignment '(center center)]
                       ))

(new button% [parent r-buttons]
     [label "exec"]
     [min-width 50]
     [enabled #t]
     [callback (lambda (button event)
                 (subprocess #f #f #f "/usr/bin/gnome-system-monitor")
                 (send display$ set-value "exec"))])

(new button% [parent r-buttons]
     [label "close"]
     [min-width 50]
     [callback (lambda (button event)
                 (exit 1))])

(define display$ (new text-field%
                      (label "")
                      (parent frame)
                      (init-value "pronto")))

(send frame show #t)

p3

Un’osservazione per me: se Eli definisce window-style con un define allora non devo più pensare di averne troppi; ovviamente senza esagerare (non avrò esagerato in questo caso?) 🙄

😀 :mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Trackback

  • La prova finestra – 2 | Ok, panico su 14 dicembre 2015 alle 09:23

    […] da qui. Solo qualche precisazione su cose non completate come si deve, un pezzo per volta. Una modifica […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: