首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在球拍GUI中获取选定的文本字段%

在球拍GUI中获取选定的文本字段%
EN

Stack Overflow用户
提问于 2013-04-27 15:54:08
回答 2查看 735关注 0票数 4

我有一个使用The Racket Graphical Interface Toolkit创建图形用户界面的应用程序。我还有一个带有几个字段的框架,它是用下面的代码创建的:

代码语言:javascript
复制
#lang racket
(require racket/gui)

(define frame (new frame% [label "frame"]))
(define field-1 (new text-field% [label "field-1"] [parent frame])) ;; add field to frame
(define field-2 (new text-field% [label "field-2"] [parent frame]))
(define field-3 (new text-field% [label "field-3"] [parent frame]))

(send frame show #t) ;; show the frame

有没有一种方法可以动态确定选定的字段?因此,询问所选场到该帧,并且如果该场被选择,则检索对该场的引用。

EN

回答 2

Stack Overflow用户

发布于 2013-04-28 06:01:54

text-field%实现了window<%>接口,因此您可以直接使用on-focus

代码语言:javascript
复制
#lang racket
(require racket/gui)

(define my-text-field%
  (class text-field%
    (super-new)
    (define/override (on-focus on?)
      (when on? (printf "~a\n" (send this get-label))))))

(define frame (new frame% [label "Frame"]))
(define field-1 (new my-text-field% [label "field-1"] [parent frame]))
(define field-2 (new my-text-field% [label "field-2"] [parent frame]))
(define field-3 (new my-text-field% [label "field-3"] [parent frame]))

(send frame show #t) ;; show the frame 
票数 3
EN

Stack Overflow用户

发布于 2013-04-27 16:18:44

我想我找到了一个解决方案,但它似乎是一个肮脏的解决方案。

我扩展了frame%类,以便可以捕获on-subwindow-focus事件。在捕获这些事件时,我检查它是否是焦点(而不是非焦点),如果接收器的object-nametext-field%,则可以注册焦点。

实现该示例的代码:

代码语言:javascript
复制
#lang racket
(require racket/gui)

(define my-frame%
  (class frame%
    (super-new)
    (define/override (on-subwindow-focus r e)
      (when (and e (eq? 'object:text-field% (object-name r)))
        (printf "selected ~a~n" (send r get-label))))))

(define frame (new my-frame% [label "Frame"]))
(define field-1 (new text-field% [label "field-1"] [parent frame])) ;; add field to frame
(define field-2 (new text-field% [label "field-2"] [parent frame]))
(define field-3 (new text-field% [label "field-3"] [parent frame]))

(send frame show #t) ;; show the frame 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16249705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档