ruby-****@lists*****
ruby-****@lists*****
2003年 6月 27日 (金) 14:47:02 JST
------------------------- REMOTE_ADDR = 163.135.10.34 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/?%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%F3%A5%C8%A5%EA ------------------------- = テキストエントリ ((*まだRuby/GTK(1)用です*)) 1行だけのテキストボックスです。 == 基本的な使い方 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry.new テキストボックスを生成します。 --- Gtk::Entry.set_text(text) テキストを設定します。 == 入力された文字列を取得する ボタンがクリックされた時に標準出力に入力された文字列を出力する例です。 require 'gtk' entry = Gtk::Entry.new button = Gtk::Button.new("click!") button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do p entry.get_text end vbox = Gtk::VBox.new vbox.pack_start(entry) vbox.pack_start(button) window = Gtk::Window.new window.set_usize(100,100) window.add(vbox) window.show_all Gtk.main --- Gtk::Entry#get_text テキストボックスの文字列を返します。 == 最大長を指定する 入力可能な最大長を指定するには、Gtk::Entry#set_max_length()を使います。 require 'gtk' entry = Gtk::Entry.new entry.set_max_length(10) window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main ただし、ここでのmax_length値は「文字数」であって「文字バイト数」ではないことに注意してください。例えば、全角の「あ」とかは10文字(20バイト分)入ってしまいます。 --- Gtk::Entry#set_max_length(length) 入力可能な最大文字長を指定します。 * length - 最大長(文字数) == 入力できなくする ユーザからの直接入力を避けたい場合はGtk::Editable#set_editable()をfalseに設定します。この場合はあくまでもユーザからの直接入力(キーボードからとか、カット&ペーストとか)をできなくするだけで、プログラム側からGtk::Entryに対して文字を設定することは可能です。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") entry.set_editable(false) vbox = VBox.new button = Button.new("click!") button.signal_connect(BUTTON::CLICKED) do entry.set_text("OK.") end vbox.add(entry) vbox.add(button) window = Gtk::Window.new window.set_usize(100,100) window.add(vbox) window.show_all Gtk.main --- Gtk::Editable#set_editable(editable) テキストウィジェットの入力可否を指定します。 * editable - trueの場合は入力可能(デフォルト)、falseの場合は入力不可能 == パスワード入力用に使う 入力すると実際は入力されているものの表示上は'****'となるやつです。Gtk::Entry#set_visibility()をfalseに設定します。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") entry.set_visibility(false) window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry#set_visibility(visible) パスワード入力用にするかどうかを指定します。 visible - trueの場合は普通のテキスト(デフォルト)、falseの場合はパスワード入力用になります。 == 文字列を追加する すでに入力されているテキストボックスに文字列を追加します。追加する方法としては、後ろにくっつける方法と前に挿入する方法があります。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello") entry.append_text(" World") entry.prepend_text("Hi! ") window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry#append_text(text) テキストを後ろに追加します。 * text - 追加する文字列 --- Gtk::Entry#prepend_text(text) テキストを先頭に追加します。 * text - 追加する文字列 ------------------------- = テキストエントリ エントリウィジェットは一行のテキストボックスに入力と表示ができる. テキストはメソッドを使って新しいテキストに置き換えることもできるし,エントリウィジェットの現在の内容の先頭または後尾にテキストを追加することもできる. まず,エントリウィジェットを作成する: Gtk::Entry.new 次のメソッドで,エントリウィジェットの現在の内容を変更することができる. Gtk::Entry#set_text(text) Gtk::Entry#text=(text) Gtk::Entry#set_textは現在の内容を置き換えてエントリウィジェットの内容を設定する. Gtk::EntryクラスはGtk::Editableモジュールをインクルードしているので,他にも内容を操作するための多くのメソッドを利用可能である. エントリウィジェットの内容は次のメソッドで取得できる. Gtk::Entry#text エントリの内容をキー入力によって変更されたくない場合は,編集可能状態を変更すればよい. Gtk::Entry#set_editable(editable) Gtk::Entry#editable=(editable) このメソッドのeditable引数にtrueまたはfalseを与えることでエントリウィジェットの編集可能状態を切り替えることができる. パスワード入力などのように入力したテキストを表示したくないようなところにエントリを使用する場合は,以下のメソッドで可視状態を変更しよう. Gtk::Entry#set_visibility(visible) Gtk::Entry#visibility=(visible) テキストのある領域を選択状態に設定するには以下のメソッドを用いることができる. これはエントリになにかデフォルトのテキストを設定した後に,ユーザが簡単にそれを削除できるようにするために使われるのがほとんどである. Gtk::Entry#select_region(start, end) エントリウィジェットのテキストの先頭からstart文字目からend文字目まで((-正確にはstart文字目の前からend文字目の前-))が選択状態になる. 負の数はテキストの末尾を意味する. ユーザがテキストを入力した事を捉えたい場合は"activate"または"changed"シグナルに接続すればよい. "activate"シグナルはユーザがエントリウィジェット内でエンターキーを押したときに発行される. "changed"シグナルはテキストを変更したときは常に,例えば文字を入力したり削除したりするたびに発行される. {{image_right "entry.png"}} 以下のコードはエントリウィジェットの利用例である. #! /usr/bin/env ruby require 'gtk2' Gtk.init window = Gtk::Window.new window.set_size_request(200, 100) window.title = "GTK Entry" window.signal_connect("destroy") {Gtk.main_quit} vbox = Gtk::VBox.new(false, 0) window.add(vbox) entry = Gtk::Entry.new entry.max_length = 50 entry.signal_connect("activate") {puts "Entry contents: #{entry.text}"} entry.text = "hello" entry.text += " world" entry.select_region(0, -1) vbox.pack_start(entry, true, true, 0) hbox = Gtk::HBox.new(false, 0) vbox.add(hbox) check = Gtk::CheckButton.new("Editable") check.signal_connect("toggled") {|w| entry.editable = w.active?} check.active = entry.editable? hbox.pack_start(check, true, true, 0) check = Gtk::CheckButton.new("Visible") check.signal_connect("toggled") {|w| entry.visibility = w.active?} check.active = entry.visibility? hbox.pack_start(check, true, true, 0) button = Gtk::Button.new("Close") button.signal_connect("clicked") {Gtk.main_quit} vbox.pack_start(button, true, true, 0) button.can_default = true button.grab_default window.show_all Gtk.main ((*ここから後ろはまだ未反映*)) = テキストエントリ ((*まだRuby/GTK(1)用です*)) 1行だけのテキストボックスです。 == 基本的な使い方 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry.new テキストボックスを生成します。 --- Gtk::Entry.set_text(text) テキストを設定します。 == 入力された文字列を取得する ボタンがクリックされた時に標準出力に入力された文字列を出力する例です。 require 'gtk' entry = Gtk::Entry.new button = Gtk::Button.new("click!") button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do p entry.get_text end vbox = Gtk::VBox.new vbox.pack_start(entry) vbox.pack_start(button) window = Gtk::Window.new window.set_usize(100,100) window.add(vbox) window.show_all Gtk.main --- Gtk::Entry#get_text テキストボックスの文字列を返します。 == 最大長を指定する 入力可能な最大長を指定するには、Gtk::Entry#set_max_length()を使います。 require 'gtk' entry = Gtk::Entry.new entry.set_max_length(10) window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main ただし、ここでのmax_length値は「文字数」であって「文字バイト数」ではないことに注意してください。例えば、全角の「あ」とかは10文字(20バイト分)入ってしまいます。 --- Gtk::Entry#set_max_length(length) 入力可能な最大文字長を指定します。 * length - 最大長(文字数) == 入力できなくする ユーザからの直接入力を避けたい場合はGtk::Editable#set_editable()をfalseに設定します。この場合はあくまでもユーザからの直接入力(キーボードからとか、カット&ペーストとか)をできなくするだけで、プログラム側からGtk::Entryに対して文字を設定することは可能です。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") entry.set_editable(false) vbox = VBox.new button = Button.new("click!") button.signal_connect(BUTTON::CLICKED) do entry.set_text("OK.") end vbox.add(entry) vbox.add(button) window = Gtk::Window.new window.set_usize(100,100) window.add(vbox) window.show_all Gtk.main --- Gtk::Editable#set_editable(editable) テキストウィジェットの入力可否を指定します。 * editable - trueの場合は入力可能(デフォルト)、falseの場合は入力不可能 == パスワード入力用に使う 入力すると実際は入力されているものの表示上は'****'となるやつです。Gtk::Entry#set_visibility()をfalseに設定します。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello World") entry.set_visibility(false) window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry#set_visibility(visible) パスワード入力用にするかどうかを指定します。 visible - trueの場合は普通のテキスト(デフォルト)、falseの場合はパスワード入力用になります。 == 文字列を追加する すでに入力されているテキストボックスに文字列を追加します。追加する方法としては、後ろにくっつける方法と前に挿入する方法があります。 require 'gtk' entry = Gtk::Entry.new entry.set_text("Hello") entry.append_text(" World") entry.prepend_text("Hi! ") window = Gtk::Window.new window.set_usize(100,100) window.add(entry) window.show_all Gtk.main --- Gtk::Entry#append_text(text) テキストを後ろに追加します。 * text - 追加する文字列 --- Gtk::Entry#prepend_text(text) テキストを先頭に追加します。 * text - 追加する文字列