2016-04-09 21 views
1

フレーム内にボタンがあり、コード内でvert-marginhoriz-marginを変更すると、ボタンの位置は変わりませんが、フレームは小さくなったり大きくなります。ラケット切り替えボタンの座標

これはコードです:

(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"))]) 

コード例を教えてください、私はこれを書いて、それが動作しません:

(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"])) 

答えて

0

frame%は、伸縮性の幅と高さをデフォルトとして持っています。 余白を使用して特定の場所にボタンを配置するのではなく、 ボタンの上と下に空のパネルを配置することをおすすめします。

#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

がよりエレガントな解決策ではないですか? –

+0

私は分かりません。コンテナを置くだけで座標を使うことができるという気がします。誰も答えなければラケットメーリングリストに質問してください。 – soegaard

+0

だから、私は2つのパネルを左に1つ、ボタンの上に1つ作って、両方を追加する必要がありますか?ボタンの親としてそれらから余白を作成するには?ボタンの親として2つのパネルを追加するにはどうすればよいですか? –

関連する問題