#!/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プログラムで実行することになります.