Maybe Tk::PathEntry is suitable for you? It is basically just an entry with the <Tab> key bound to filename-completion. To select all files in a directory you could just enter a path with "*" at the end and do globbing in your application afterwards.