首页 > 解决方案 > 使用 Python 选择目录

问题描述

我想用 Python 选择 5 个图像,以便我可以在我的 python 程序中使用这些图像。我试图用 QFileDialog() (PyQt5) 来做到这一点,但我只成功地单选了一个文件。而如何选择文件夹也不是很全面。

我只想选择 5 张图像并选择一个文件夹,以便我可以将文件保存在该文件夹中。但要做到这一点似乎并不容易。我真的很喜欢 Python,因为它非常简单,但 PyQt5 让我每次使用它时都非常激进,所有其他库都很好且易于理解。也许pyqt有一个很好的替代品?tkinter 也许?

谢谢。

标签: pythondirectorypyqt5

解决方案


Qt 提供了一堆静态方法来获得标准化的文件对话框,其中两个已经满足您的需求:(getOpenFileNames()强调最后的“s”)和getExistingDirectory().

第一个将返回所选文件[s]的绝对路径列表,最后一个将返回所选目录。


我知道,如果您对 C++ 一无所知,阅读官方文档可能会有点不知所措(尽管对它们进行了详细解释),但它们并不像人们想象的那么难。
每个函数都以非常简单的方式列出:

returned_type : function_name(arguments) [const -> you can usually ignore this]

returned_type 是函数预期返回的值的类型。在“c++ slang”void中,与return(或根本不返回,因为如果函数末尾没有返回其他值/对象return None,Python 会隐式返回),如果类型是 QString,它会自动转换为 Python , while和 Python 的浮点数一样,. 这对于 Qt 内部使用的“私有”函数(方法)非常重要:如果您是子类化并想要覆盖 Qt 类的私有方法,则必须返回 Qt 期望的类型。理论上你可以忽略Nonestrqrealreturned_type如果您知道自己在做什么,则用于公共功能,但通常最好坚持使用原始类型。有一些小的“例外”需要考虑。在某些情况下,Qt 期望在函数中修改某些参数,并且通常会返回函数是否​​成功,而在 Python 中它可能会返回对参数的引用(抱歉,我现在不记得它们了)。其他一些函数返回一个元组而不是单个值,这就是一些静态 QFileDialog 函数的情况,例如 getOpenFileName[s] 它返回选定的文件[s] 和选定的过滤器。


推荐阅读