2016-04-09 22 views
1

Çerçevede bir düğmem var ve kodda vert-margin ve horiz-margin değiştirdiğimde düğme konumu değiştirmez, ancak çerçeve küçülür veya büyür. Raket değiştirme düğmesi koordinatları

Bu

kodudur:

(require racket/gui/base) 

(define frame (new frame% [label "GUI BUILDER"] 
         [width 300] 
         [height 400] 
         [style '(no-resize-border)])) 

(send frame show #t) 

(define msg (new message% [parent frame] 
          [label "Text"])) 

(new button% [parent frame] 
      [label "Generate button code"] 
      [vert-margin 200] 
      [horiz-margin 480] 
      [callback (lambda (button event) 
         (send msg set-label "Changed"))]) 

kod örneklerini verin, ben yazdım ve çalışmıyor: esneyebilen bir genişlik ve yüksekliği varsayılan olarak bir frame% sahiptir

(require racket/gui/base) 

(define frame (new frame% [label "GUI BUILDER"] 
          [width 700] 
          [height 700])) 

(send frame show #t) 

(define coloana (new vertical-panel% [parent frame])) 

(define cub1 (new horizontal-panel% [parent coloana] 
            [min-height 150])) 

(define cub2 (new horizontal-panel% [parent coloana] 
            [min-height 50])) 

(define cub3 (new horizontal-panel% [parent cub2] 
            [min-width 50])) 

(define buton (new button% [parent cub1] 
          [label "Generate button code"])) 

cevap

0

. Düğmeyi belirli bir konuma yerleştirmek için kenar boşlukları kullanmak yerine, I boş panelin üst kısmına ve düğmenin soluna yerleştirilmesini öneririm. daha zarif bir çözüm

#lang racket 
(require racket/gui/base) 

(define frame 
    (new frame% [label "GUI BUILDER"] 
     [width 300] 
     [height 400] 
     [style '(no-resize-border)])) 

(define row1 
    (new horizontal-panel% 
     [parent frame] 
     [min-width 300] 
     [min-height 50] 
     [style  '(border)] 
     [stretchable-height #f])) 

(define row2 
    (new horizontal-panel% 
     [parent frame] 
     [stretchable-height #f])) 

(define row3 
    (new horizontal-panel% 
     [parent frame] 
     [style '(border)] 
     [stretchable-height #t])) 

(define col-2-1    ; row 2 column1 
    (new vertical-panel% 
     [parent row2] 
     [min-width 100] 
     [style '(border)] 
     [stretchable-height #t])) 

(new message% [parent row1] [label "row1"]) 
(new message% [parent col-2-1] [label "col-2-1"]) 
(new message% [parent row3] [label "row3"]) 

(define button-msg (new message% [parent row1] [label "Text     "])) 

(define button (new button% 
        [parent  row2] 
        [label  "Click"] 
        [vert-margin 0] 
        [horiz-margin 0] 
        [style  '(border)] 
        [callback  (λ (button event) 
            (send button-msg set-label "Changed"))])) 

(send frame show #t) 

The Frame

+0

yok mu? –

+0

Bilmiyorum. Koğuşları sadece konçerleri yerleştirmek için kullanabileceğiniz bir konteyner olması gerektiğini hissediyorum. Hiç kimse burada cevap vermezse, raket posta listesine başvurunuz. – soegaard

+0

Yani, iki tane solda, diğeri de düğmenin üstünde olmalı ve sonra BOTH ekle? Düğmeden ebeveynler onlardan bir marj oluşturmak için? Düğmeye ebeveynler olarak iki paneli nasıl ekleyebilirim? –