Как выделить весь текст в поле ввода tk (ruby) - PullRequest
1 голос
/ 18 августа 2011

Просто набираю скорость с тк / рубин.

У меня очень простое окно с областью ввода текста в одну строку, кнопкой «Перейти» и меткой обратной связи.

Желаемое поведение состоит в том, что пользователь вводит некоторый текст, нажимает кнопку «Перейти», и код выполняет некоторую работу.

Когда во всем поле ввода должен быть введен текст, но он должен быть выделен и фокус в поле ввода, чтобы, если пользователь начнет вводить снова, то, что было в этом поле, будет перезаписано.

В .net это было довольно легко, просто скажите .seallall в поле ввода. не могу понять, как это сделать в ТК.

    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 ]

1 голос
/ 18 августа 2011

Порядок важен:

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

Это работает, чтобы выделить текстовое поле.Возвращение фокуса к окну - это еще один вопрос, который я задам в другом месте.

1 голос
/ 18 августа 2011

Похоже, вам нужно добавить весь текст виджета в специальный тег "sel" (выделение).

То, что ваш sw добавляет в тег sel, будет выделено на экране.

См. документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...