save_file()没有给出'已经存在'消息框

时间:2014-07-17 23:00:41

标签: enthought traitsui

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

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

但是,当我使用PTVS从Visual Studio内部运行相同的代码时,我确实已经存在“已经存在的文件”。弹出窗口,可选择接受或取消。

为什么PTVS版本有效,(更重要的是)如何让我的Canopy Editor版本工作?

感谢任何人可以提供的任何手持:)

史蒂夫

2 个答案:

答案 0 :(得分:0)

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

更新

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

答案 1 :(得分: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运行此操作,则弹出文件已存在...'使用OK / Cancel按钮的对话框......在后端使用Qt运行不会在iPython窗口中产生弹出和NotImplemented错误:((如果我输入一个新的,不存在的文件名,save_file正常工作)

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

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