Button 球拍变换按钮坐标

Button 球拍变换按钮坐标,button,racket,Button,Racket,我在一帧中有一个按钮,当我在代码中更改垂直边距和水平边距时,按钮不会更改其位置,而是帧变小或变大 代码如下: (require racket/gui/base) (define frame (new frame% [label "GUI BUILDER"] [width 300] [height 400] [style '(no-resize-border)]))

我在一帧中有一个按钮,当我在代码中更改
垂直边距
水平边距
时,按钮不会更改其位置,而是帧变小或变大

代码如下:

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

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)

A
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)

有没有更优雅的解决方案?我不知道。我觉得应该有一个容器,你可以简单地用坐标来放置容器。如果这里没有人回答,一定要问球拍邮件列表。所以,我应该制作两个面板,一个在左边,一个在按钮顶部,然后将两者都添加?作为家长的按钮,从他们创建一个空白?我怎么才能为一个按钮添加两个面板作为父面板呢?这个想法是在框架中创建两行。在前两个中,放置一个水平面板,其高度将决定按钮的y位置。在第二行中,首先放置水平面板,然后放置按钮。水平面板的宽度将决定按钮的x位置。因此1。做一个框架。2.制作一个垂直面板以容纳行。3.将填充板放在垂直面板上。有没有更优雅的解决方案?我不知道。我觉得应该有一个容器,你可以简单地用坐标来放置容器。如果这里没有人回答,一定要问球拍邮件列表。所以,我应该制作两个面板,一个在左边,一个在按钮顶部,然后将两者都添加?作为家长的按钮,从他们创建一个空白?我怎么才能为一个按钮添加两个面板作为父面板呢?这个想法是在框架中创建两行。在前两个中,放置一个水平面板,其高度将决定按钮的y位置。在第二行中,首先放置水平面板,然后放置按钮。水平面板的宽度将决定按钮的x位置。因此1。做一个框架。2.制作一个垂直面板以容纳行。3.将填充板放置在垂直面板中。