QFileDialog与德语变音变音在一条路径内

2024-04-27 02:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,我正在用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将按预期关闭。在


Tags: 文件to项目命令编辑if场景filename
2条回答
  1. 尝试使用lambda x:x.toUtf8()或toLocal8Bit()或将TextCodec设置为任何所需的代码页,这应该会有所帮助。这些方法返回正确编码的python字符串。避免在QString上使用str(),它不知道您想要的charmap。

  2. 什么是getSelectedFiles()?QFileDialog类的Qt4.5或更高版本中没有这样的方法。我假设是打字错误或一些旧的Qt版本,并在我的测试代码中将其更改为selectedFiles()。

  3. 为什么不使用QFileDialog的方便方法来选择文件:

    getExistingDirectory() getOpenFileName() getOpenFileNames() getSaveFileName()

是吗?在

应该使用unicode()(而不是str())将QString转换为Python unicode字符串。在

相关问题 更多 >