【问题标题】:How to get a TkInter file selection dialogbox to work with IPython / Spyder?如何让 TkInter 文件选择对话框与 IPython / Spyder 一起使用?
【发布时间】:2015-07-18 04:45:01
【问题描述】:

我正在尝试为我的一个脚本创建一个简单的文件选择对话框,并尝试使用该线程中的代码示例:Quick and easy file dialog in Python?

import Tkinter, tkFileDialog

root = Tkinter.Tk()
root.withdraw()

file_path = tkFileDialog.askopenfilename()

我也尝试使用使用 Tkinter 的 easygui 模块来做同样的事情。在这两种情况下,上面的代码都会挂起 IPython 控制台。我认为这与事件循环有关,但我对 Python 中的 GUI 没有真正的经验。

有人可以为我指明正确的方向,了解如何让一个用于文件选择的对话框与 IPython/Spyder 一起工作。作为记录,我使用的是 Python 2.7.6 和 IPython 2.4.1

【问题讨论】:

    标签: python tkinter ipython spyder


    【解决方案1】:

    在运行上述代码之前,您需要设置正确的事件循环(在本例中为Tk),正如您猜对的那样。

    为此,您需要运行以下命令:

    In [1]: %gui tk
    

    然后运行您的代码。

    注意:要访问有关 Spyder 中 %gui 魔法的文档,您需要将光标放在 %gui 前面并按 Ctrl+I,如下所示

    In [1]: %gui<Ctrl+I>
    

    【讨论】:

    • 我不在我的工作计算机上尝试它,而是在我家里的桌面上,我刚刚在 Spyder (Spyder 2.3.4) 的 IPython 控制台中尝试了%gui tk,我得到以下信息错误消息:“错误:无法激活多个 GUI 事件循环”我确实在 IPython QtConsole 中尝试过此操作,并且它在没有错误消息的情况下工作。我需要在 Spyder 设置中更改什么特殊内容才能使 %gui 命令适用于 tkinter?
    • 这是因为您在 Spyder 首选项中选择了另一个后端来创建绘图(可能是 qtautomatic)。要使%gui tk 在这种情况下工作,您需要先运行%gui inline。这是在同一会话中更改后端并看到该错误的小技巧。
    • 我还忘了提到,如果你想将tk设置为所有控制台的默认后端,你需要转到Tools &gt; Preferences &gt; IPython Console &gt; Graphics &gt; Graphics backend并在那里选择Tk
    猜你喜欢
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2017-10-05
    相关资源
    最近更新 更多