为什么 text% 中的文本没有被删除?

Why text in text% not getting deleted?

我想从文本区域删除现有文本并插入新文本,但它不起作用。我有以下代码:

#lang racket/gui
(define myframe (new frame%
                     [label "testing"]
                     [width 600]
                     [height 400]))
(define mytextarea (new text% ))
(new editor-canvas% 
    [parent myframe] 
    [editor mytextarea])
(define (button_fn button event)
        (begin
          (send mytextarea delete               ; does not work;
                (send mytextarea get-start-position)
                (send mytextarea get-end-position))
          (send mytextarea insert "New string inserted" 0) ; works;
          ))
(define mybutton (new button% [parent myframe]
                    [label "delete"]
                    [callback button_fn ]))
(send myframe show #t)

没有错误信息。问题出在哪里,如何解决?

get-start-position and get-end-positionreturn当前选择的开始和结束;如果没有选择,那么它们都是 return 光标的位置。

如果要删除文本区的全部内容,使用last-position:

(send mytextarea delete 0 (send mytextarea last-position))

或者您可以使用 erase 方法:

(send mytextarea erase) ;; deletes everything