Ruby/TkではTkEntryクラスが相当します.
使用例を示します.
#!/usr/local/bin/ruby
require 'tk'
var = TkVariable.new('')
entry = TkEntry.new(nil, 'textvariable' => var)
entry.pack('side' => 'top', 'fill' => 'both')
button = TkButton.new(nil, 'text' => 'print',
'command' => proc{print var.value, "\n"})
button.pack('side' => 'left', 'fill' => 'both')
quitbutton = TkButton.new(nil, 'text' => 'quit',
'command' => proc{exit})
quitbutton.pack('side' => 'right', 'fill' => 'both')
Tk.mainloop
上記のプログラムを走らせると,最初下のようになります.
エントリをクリックしてアクティブにした後文字列を入力できます.
この後,printボタンを押すと,プロンプトに入力した文字列が出力されます.
TkEntryクラスのインスタンス変数を以下に示します.
| インスタンス変数名 | 役割 |
|---|---|
| background | 背景色. |
| foreground | 前景色. |
| insertbackground | カーソルの背景色. |
| insertborderwidth | カーソルのまわりの境界線の幅. |
| insertofftime | カーソル点滅のoffの時間(単位ミリ秒). |
| insertontime | カーソル点滅のonの時間(単位ミリ秒). |
| textvariable | 表示する文字列変数.TkVariableオブジェクトで指定. |
| justify | 文字列をよせる側."left","center","right"で指定. |
| borderwidth | 枠の幅.整数値で指定. |
| cursor | マウスカーソルの形. |
| highlightcolor | ウィジェットにフォーカスがある時の枠の色. |
| highlightthickness | ウィジェットにフォーカスがある時の枠の幅. |
| relief | ウィジェットの凹凸.'raised'または'sunken'で指定. |
| wraplength | 折り畳むときの1行の文字数. |
| xscrollcommand | 横スクロールバーを連動させるときに使用します.詳説は後節で. |
| show | 入力した文字列から置き換える文字."*"などを指定してパスワードに使用します. |
| state | ボタンの状態です.'normal','active'または'disabled'で指定します.'disabled'にすると,内容が変更できません. |
| width | ウィジェットの幅. |
パスワード入力画面を作成の際はshowインスタンス変数をを利用しましょう.
#!/usr/local/bin/ruby
require 'tk'
var = TkVariable.new('')
entry = TkEntry.new(nil, 'textvariable' => var,
'show' => '*')
entry.pack('side' => 'top', 'fill' => 'both')
button = TkButton.new(nil, 'text' => 'print',
'command' => proc{print var.value, "\n"})
button.pack('side' => 'left', 'fill' => 'both')
quitbutton = TkButton.new(nil, 'text' => 'quit',
'command' => proc{exit})
quitbutton.pack('side' => 'right', 'fill' => 'both')
Tk.mainloop
このプログラム上のエントリに入力した全ての文字が'*'で表示され,パスワードが第3者にもれるおそれが少なくなります.