[Tkinter-discuss] tkFileDialog.askopenfile() mac
JBB
jeanbigboute at gmail.com
Wed Aug 13 06:05:16 CEST 2014
Kevin,
On 8/12/14, 7:19 PM, Kevin Walzer wrote:
> Hi,
> On 8/12/14, 10:23 AM, JBB wrote:
>> After some more digging, I find that Python uses the macosx backend on
>> initialization. If I change this to tk before beginning work, the
>> problem goes away. My Linux Python uses tk by default.
>
> What do you mean by this? On Mac, Tkinter/Tk uses native dialogs and
> widgets by default. What change did you make to get it to work on the Mac?
Thank you for the suggestions. My notes:
I normally use the iPython Notebook for my Python coding. As a newcomer
to the language, the self-documenting features are helpful.
The following code works in the notebook: A file dialog (native Mac)
comes up, I can navigate, select a file, the dialog box closes, and the
correct path and filename print.
%matplotlib tk
from Tkinter import *
import tkFileDialog
root = Tk()
root.withdraw()
filename = tkFileDialog.askopenfilename(parent=root)
print filename
If I don't have the initial magic command, the file dialog box hangs
after file selection. The rainbow ball just spins until I restart the
kernel at which point it closes.
I normally invoke the notebook with
ipython notebook
%matplotlib at the first cell gives
Using matplotlib backend: MacOSX
I can't change the backend at this point so I have to restart the kernel
and make sure to run %matplotlib tk before any imports.
This is a convenient albeit slightly kludgy way of setting the backend.
If I invoke the notebook with:
ipython notebook --matplotlib=tk
then the code above _without_ the %magic command works fine.
> I did see the dialog hanging on the Mac. My guess is that you weren't
> giving the event loop enough time to spin; the dialog was popping up too
> fast. This code works just fine:
>
> from Tkinter import *
> import tkFileDialog
> root = Tk()
> def openfile():
> tkFileDialog.askopenfilename(parent=root)
> b = Button(root, text="Open", command=openfile).pack()
> root.mainloop()
I tried this in a fresh notebook.
A small window opens, when I mouseover, an Open button appears. I click
it, I get a native Mac file dialog box. I navigate, select a file, the
dialog box disappears and the small window/button remain. The kernel on
the notebook shows busy until I close the small window.
I'm not up on the Button and .pack tools as yet. I don't know where the
filename is stored.
JBB
More information about the Tkinter-discuss
mailing list