Выберите каталог с Python - PullRequest
0 голосов
/ 15 июня 2019

Я хочу выбрать 5 изображений с помощью Python, чтобы я мог использовать эти изображения в моей программе на Python. Я пытался сделать это с помощью QFileDialog () (PyQt5), но мне удалось только один раз выбрать файл. И как выбрать папку тоже не совсем исчерпывающе.

Я просто хочу выбрать 5 изображений и выбрать папку, чтобы я мог сохранять файлы в этой папке. Но, похоже, это не так просто сделать. Мне действительно нравится Python, потому что он такой простой, но PyQt5 заставляет меня каждый раз использовать его просто агрессивно, все остальные библиотеки просто приятны и легки для понимания. Может быть, есть хорошая альтернатива pyqt? ткинтер может быть?

спасибо.

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Qt предоставляет набор статических методов для получения стандартизированных файловых диалогов, два из которых уже удовлетворяют ваши потребности: getOpenFileNames() (ударение на последние "s") и getExistingDirectory().

Первый вернет список абсолютных путей выбранного файла [s], последний вернет выбранный каталог.


Я знаю, что чтение официальной документации может быть немного ошеломляющим, если вы ничего не знаете о C ++ (хотя они подробно объясняются ), но они не так сложны, как могли бы думаю.
Каждая функция перечислена очень простым способом:

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

Возвращенный_тип - это тип значения, которое ожидается от функции. В «сленге c ++» void - это то же самое, что и return (или return None или вообще никакого возврата, поскольку Python неявно возвращает None, если никакое другое значение / объект не возвращается в конце функции), если тип является QString, он автоматически конвертируется в Python str, в то время как qreal совпадает с плавающими в Python. Это очень важно для «приватных» функций (методов), которые используются внутри Qt: если вы используете подклассы и хотите переопределить закрытый метод класса Qt, вы имеете для возврата ожидаемого Qt типа , Вы можете теоретически игнорировать returned_type для публичных функций, если знаете, что делаете, но обычно лучше придерживаться исходного типа. Есть несколько небольших «исключений», которые требуют некоторого рассмотрения. В некоторых случаях Qt ожидает некоторый аргумент, который будет изменен внутри функции и обычно будет возвращать, была ли функция успешной или нет, в то время как в Python он мог бы возвращать ссылку на аргумент (извините, я не могу вспомнить их сейчас). Некоторые другие функции возвращают кортеж вместо одного значения, и это имеет место в случае некоторых статических функций QFileDialog, таких как getOpenFileName [s], которые возвращают как выбранный файл [s], так и выбранный фильтр.

0 голосов
/ 15 июня 2019

Для выбора папки вы можете использовать этот код:

widget = QWidget()
dialog = QFileDialog(
    widget, "Select Directory of the Desired Files", os.path.curdir
)
dialog.setFileMode(QFileDialog.DirectoryOnly)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...