如何选择tk输入框中的所有文本(ruby)

时间:2011-08-18 01:12:00

标签: ruby tk

刚刚开始使用tk / ruby​​。

我有一个非常简单的窗口,带有一行文本输入区域,一个“go”按钮和一个反馈标签。

所需的行为是用户输入一些文本,点击“开始”按钮,代码可以正常工作。

当输入框全部输入时应输入文字,但应突出显示并将焦点放在输入框中,这样如果用户再次开始输入,框中的内容将被覆盖。

在.net中这很简单,只需对输入字段说.selectall。无法弄清楚如何在tk中做到这一点。

    root = TkRoot.new {title "Test App"}
content = Tk::Tile::Frame.new(root) {padding "3 3 12 12"}.grid( :sticky => 'nsew')
TkGrid.columnconfigure root, 0, :weight => 1; TkGrid.rowconfigure root, 0, :weight => 1
$job= TkVariable.new; $status = TkVariable.new
$j = Tk::Tile::Entry.new(content) {
      width 14; textvariable $job}.grid( :column => 1, :row => 1, :sticky => 'we' )
Tk::Tile::Button.new(content) {
         text 'Find Job'
         command {go_do_something}
       }.grid( :column => 2, :row => 1, :sticky => 'w')

    def go_do_something
       # ... do some processing, then I want to...
       # $j.focus
       # $j.select_all
    end

提前致谢

2 个答案:

答案 0 :(得分:1)

看起来您需要将所有小部件的文本添加到特殊的“sel”(选择)标记中。

您的sw添加到sel标签的内容将在屏幕上被选中。

请参阅docs

答案 1 :(得分:1)

订单很重要:

$j.focus; 
$j.selection_range(0,100)

这适用于选择文本框。让焦点回到窗口是我将在其他地方提出的另一个问题。