我试图使用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版本工作?
感谢任何人可以提供的任何手持:)
史蒂夫
答案 0 :(得分:0)
更新
一个更有吸引力和高性能的解决方案是继续使用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下正常工作并且没有错误?