Go言語 - WALKでGUI - FileDialog
FileDialogの使用例。
ボタンクリックでFileDialogを作成し表示させています。
walk.FileDialog構造体を作成して、ShowOpenメソッドで表示させます。ダイアログがキャンセルで閉じられた場合には戻り値のokがfalseになり、trueの場合はFilePathフィールドからファイルパスを取得します。
特定の拡張子のファイルのみ表示させる場合には、Filterフィールドに設定します。例ではexeファイルのみと全ファイルを選択できる様にしています。
package main import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) import ( "fmt" "os" ) type MyMainWindow struct { *walk.MainWindow edit *walk.TextEdit path string } func main() { mw := &MyMainWindow {} MW := MainWindow{ AssignTo: &mw.MainWindow, Title: "FileDialogテスト", MinSize: Size {150, 200}, Size : Size {300, 400}, Layout: VBox {}, Children: []Widget { TextEdit { AssignTo: &mw.edit, }, PushButton { Text: "Open Dialog", OnClicked: mw.pbClicked, }, }, } if _, err := MW.Run(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } func (mw *MyMainWindow) pbClicked() { dlg := new(walk.FileDialog) dlg.FilePath = mw.path dlg.Title = "Select File" dlg.Filter = "Exe files (*.exe)|*.exe|All files (*.*)|*.*" if ok, err := dlg.ShowOpen(mw); err != nil { mw.edit.AppendText("Error : File Open\r\n") return } else if !ok { mw.edit.AppendText("Cancel\r\n") return } mw.path = dlg.FilePath s := fmt.Sprintf("Select : %s\r\n", mw.path) mw.edit.AppendText(s) }