0

我正在尝试使用 traitsui.file_dialog 中的 save_file(),但遇到了问题……真正奇怪的是,如果我在 Visual Studio 中运行我的代码(使用 PTVS),它工作得很好!

这是我看到的问题......当我使用 save_file() 创建的对话框来选择一个已经存在的文件时,我在 Canopy 编辑器的 iPython 窗口中收到 NotImplemented 错误,我认为这表明我没有在我的代码中有一个 FileExistsHandler(我仍处于学习 Python/Canopy/Traits 的早期阶段,所以我可能在这里湿透了 :))。我也从未收到“文件已存在”弹出窗口。

但是,当我使用 PTVS 从 Visual Studio 中运行相同的代码时,我确实会看到“文件已存在”弹出窗口,其中包含接受或取消的选项。

为什么 PTVS 版本可以工作,以及(更重要的是)我怎样才能让我的 Canopy 编辑器版本工作???

感谢任何人都可以提供的任何帮助:)

史蒂夫

4

2 回答 2

0

Steve,在 Canopy 首选项对话框的 Python 选项卡中尝试的一件简单的事情是将 GUI 后端从 Qt 更改为 WX。

更新:

一个更具吸引力和性能的解决方案是继续使用 Qt,但使用来自 pyface 的文件对话框(pyface.api.FileDialog(Qt-specific;对于 API,请参阅https://github.com/enthought/pyface/blob /master/pyface/i_file_dialog.py)。

于 2014-07-18T22:25:48.653 回答
0

进一步更新...这是一个简单的代码块,在使用 WX 作为 Python 后端时可以正常工作,但是使用 Qt 运行时会出现问题:

from traitsui.file_dialog import save_file, TextInfo

import os

def SaveFile ( filename ):
    """ Handles the user clicking the 'SaveAs...' button.
    """
    if not os.path.isfile(filename):                   # if the file doesn't exist, just put the path into the file_name so I start in the same directory
        (filename, dummyname) = os.path.split(filename)
    filename = save_file( extensions  = TextInfo(),
    file_name  = filename,
    title      = 'Save File As...',
    )
    return filename

newfile = SaveFile('C:\\temp\\already_there.txt')

如果您使用 WX 运行此程序,则会弹出“文件已存在...”对话框,其中包含确定/取消按钮...在后端使用 Qt 运行不会产生弹出窗口,并且 iPython 窗口中出现 NotImplemented 错误: ((如果我输入一个新的、不存在的文件名,save_file 可以正常工作)

我真的很喜欢 Qt 屏幕的外观,有人告诉我 WX 仅适用于 Windows(我不确定,我没有检查过)

有没有办法让 save_file() 在 Qt 下正常工作且无错误?

于 2014-07-25T23:22:25.987 回答