[Tkinter-discuss] tkinter file dialog pattern matching (fwd)

Chris Roy-Smith chris_roysmith at internode.on.net
Mon Aug 24 02:43:19 CEST 2015


On 23/08/15 23:52, Laura Creighton wrote:
> oooh.  Seems that there is an undocumented feature we can use!
>
> Laura
>
> ------- Forwarded Message
>
> Return-Path: <tkinter-discuss-bounces+lac=openend.se at python.org>
> Date: Sun, 23 Aug 2015 12:40:02 +0200
> From: Michael Lange <klappnase at web.de>
> To: tkinter-discuss at python.org
> Message-Id: <20150823124002.7391f37e21f9b5cfaa91770f at web.de>
> In-Reply-To: <20150822210424.321b826f at lenny>
> References: <201508221103.t7MB3kdx010426 at fido.openend.se>
>
> Hi,
>
> On Sat, 22 Aug 2015 21:04:24 +0100
> Pawel Mosakowski <pawel at mosakowski.net> wrote:
>
>> Hi,
>>
>> I've found this little gem in the Tk docs
>> https://www.tcl.tk/man/tcl8.4/TkCmd/getOpenFile.htm#M13
>>  From what I see "file patterns" in the file dialog are not "regex
>> patterns" and do not support special characters. Only things that work
>> are:
>> 1) * - any extension
>> 2) "" - files without extension
>> 3) literal extension without wildcard chars
>> Unfortunately it looks like there is no simple way to filter out hidden
>> files.
>
> actually the unix tk file dialog has an an (however undocumented) feature
> to hide hidden elements and display even a button that allows to toggle
> between hidden elements on/off, however we need to do a little tcl to get
> to this. Since the feature is not documented anywhere it might also be a
> good idea to wrap this into a try...except. See this little code snippet:
>
> #############################################
> from Tkinter import *
> import tkFileDialog as tkfd
>
> root = Tk()
>
> try:
>      # call a dummy dialog with an impossible option to initialize the file
>      # dialog without really getting a dialog window; this will throw a
>      # TclError, so we need a try...except :
>      try:
>          root.tk.call('tk_getOpenFile', '-foobarbaz')
>      except TclError:
>          pass
>      # now set the magic variables accordingly
>      root.tk.call('set', '::tk::dialog::file::showHiddenBtn', '1')
>      root.tk.call('set', '::tk::dialog::file::showHiddenVar', '0')
> except:
>      pass
>
> # a simple callback for testing:
> def openfile(event):
>      fname = tkfd.askopenfilename()
>      print(fname)
> root.bind('<Control-o>', openfile)
>
> root.mainloop()
> #############################################
>
> Best regards
>
> Michael
>
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss at python.org
> https://mail.python.org/mailman/listinfo/tkinter-discuss
>
> ------- End of Forwarded Message
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
Thanks Laura,
That does exactly what I wanted to do.


More information about the Tkinter-discuss mailing list