我正在做一个项目,我正在用Python和PyQT4开发这个项目。我偶然发现了QFileDialog有点奇怪的行为,在我的IDE(Eclipse)中运行项目时不会出现这种情况。在
问题是,当其中一个文件路径包含德语元音变音符(ä,ü,ö等)时,现有文件模式下的QFileDialog确实无法返回所选文件的列表 QFileDialog没有提供选项或参数来使它对这个场景更为合理。 有人知道如何解决这个问题吗?在
编辑:发生错误的部署场景如下所示。我用Py2Exe构建一个可执行文件,然后用Inno Setup使其可分发。不知道这是否导致了这个问题,但信息越多越好。在
编辑2: 我直到周五才有确切的代码可访问,但是我们有一个if语句在等待对话框完成。像这样:
fileDialog = QFileDialog(...)
if fileDialog.exec_():
# get the choosen files
fileNames = fileDialog.getSelectedFiles()
# test if if-statement is entered
print fileNames
# convert from QStringList to normal list of Strings
fileNames = list(map(lambda x: str(x), fileNames))
# to suffice as an example print each
for fileName in fileNames:
print fileName
第一个print命令确实执行了,第二个命令没有执行,就好像中间有什么东西不愿意终止,而Python正在以某种方式安静地处理异常。但是,在选择文件并单击“打开”或双击某个文件后,QFileDialog将按预期关闭。在
尝试使用lambda x:x.toUtf8()或toLocal8Bit()或将TextCodec设置为任何所需的代码页,这应该会有所帮助。这些方法返回正确编码的python字符串。避免在QString上使用str(),它不知道您想要的charmap。
什么是getSelectedFiles()?QFileDialog类的Qt4.5或更高版本中没有这样的方法。我假设是打字错误或一些旧的Qt版本,并在我的测试代码中将其更改为selectedFiles()。
为什么不使用QFileDialog的方便方法来选择文件:
getExistingDirectory() getOpenFileName() getOpenFileNames() getSaveFileName()
是吗?在
应该使用unicode()(而不是str())将QString转换为Python unicode字符串。在
相关问题 更多 >
编程相关推荐