ファイルセレクタ(getOpenfile, getSavefile)

新規ウィンドウにファイルセレクタを生成して,選択したファイル名を返すメソッドが getOpenfileとgetSavefileです.getOpenfileは選択したファイルが存在しないとき, getSavefileは選択したファイルが存在するときに,ダイアログを出して確認させることができます.
#!/usr/local/bin/ruby

require 'tk'

var = TkVariable.new('')
label = TkLabel.new(nil,
		    'width'=>50,
		    'textvariable' => var).pack
button1 = TkButton.new(nil,
		      'text' => 'Open')
button2 = TkButton.new(nil,
		      'text' => 'Save')

def getopenfile
  return Tk.getOpenFile('title' => 'ファイルを開く',
			'defaultextension' => 'sgf', 
			'filetypes' => "{PNG {.png}} {HTML {.html}} {Ruby {.rb}} {SGF {.sgf}} {全てのファイル {.*}}")
end

def getsavefile
  return Tk.getSaveFile('title' => 'ファイルを開く',
			'defaultextension' => 'sgf', 
			'filetypes' => "{PNG {.png}} {HTML {.html}} {Ruby {.rb}} {SGF {.sgf}} {全てのファイル {.*}}")
end

button1.command(proc{var.value = getopenfile})
button2.command(proc{var.value = getsavefile})
button1.pack
button2.pack
tk.mainloop
上記のプログラムを走らせ,openボタンを押すと,下のようなウィンドウが生成されます.

また,ファイルを選択すると,ルートウィンドウは以下のようにファイル名がラベルに表示されます.

なお,このプログラムでは,ファイル名を獲得するだけで,実際にファイルが書き換えられるわけではありません.実際の読みだし,書き換えはRubyプログラムで実行することになります.


戻る