Павел Asked:2021-12-12 19:48:18 +0000 UTC2021-12-12 19:48:18 +0000 UTC 2021-12-12 19:48:18 +0000 UTC QFileDialog 不按扩展名过滤文件 772 有一个用于上传文件的模板。我需要上传图片,并且只有扩展名.png。 因此,有必要在对话框中仅显示此类文件,并且остальные - скрывать. 告诉我我写错了什么? 写了代码: imagePathTuple = QFileDialog.getOpenFileName( None, 'Выбрать изображение', '*', "Image files (*.png)" ) 最后,它似乎是按扩展名过滤的"Image files (*.png)",但在窗口中,文件夹中的所有文件都是一样的。 python 1 个回答 Voted Best Answer S. Nick 2021-12-12T21:46:07Z2021-12-12T21:46:07Z 该类QFileDialog允许用户在文件系统中导航以选择一个或多个文件或目录。 QString QFileDialog::getOpenFileName( QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options() ) getOpenFileNameстатическая функция是返回用户选择的现有文件的便利。如果用户单击Cancel,则返回一个空字符串。 该函数使用给定的父小部件创建一个模式文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。 文件对话框的工作目录将设置为dir. 如果它dir包含一个文件名,它将被选中。仅显示与指定过滤器匹配的文件。选定的过滤器设置为selectedFilter。,dir和参数可以是空字符串selectedFilter。filter 这个静态函数将使用它自己的文件对话框Windows而不是macOSQFileDialog. 在你的情况下: imagePathTuple = QFileDialog.getOpenFileName( None, # QWidget *parent = nullptr, 'Выбрать изображение', # const QString &caption = QString(), '*', # const QString &dir = QString(), <<<---- !!! "Image files (*.png)" # const QString &filter = QString(), ) 工作目录dir -> '*'被解释为选择所有文件并覆盖filter。 将此字段留空或指定工作目录。 imagePathTuple = QFileDialog.getOpenFileName( None, 'Выбрать изображение', '', # <<<---- !!! # или так: # "/home", # <<<---- !!! "Image files (*.png)" )
该类
QFileDialog允许用户在文件系统中导航以选择一个或多个文件或目录。getOpenFileNameстатическая функция是返回用户选择的现有文件的便利。如果用户单击Cancel,则返回一个空字符串。该函数使用给定的父小部件创建一个模式文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。
文件对话框的工作目录将设置为
dir. 如果它dir包含一个文件名,它将被选中。仅显示与指定过滤器匹配的文件。选定的过滤器设置为selectedFilter。,dir和参数可以是空字符串selectedFilter。filter这个静态函数将使用它自己的文件对话框
Windows而不是macOSQFileDialog.在你的情况下:
工作目录
dir -> '*'被解释为选择所有文件并覆盖filter。将此字段留空或指定工作目录。