Для простого диалогового окна файла, такого как:
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
OpenFile = QFileDialog()
filenames = OpenFile.getOpenFileNames()
print(filenames)
Shift-select работает для выбора нескольких элементов, а Ctrl/Cmd+A — нет. Это особенность ОС или она должна быть включена определенным образом в PyQt5?
Обновлено: причина, по которой это не работает, заключается в следующем: https://bugreports.qt.io/browse/QTBUG-17291
Qt ожидает строку меню с сочетанием клавиш, а QFileDialog не имеет строки меню, поэтому отсутствуют сочетания клавиш, такие как «выбрать все».
macOS 10.14, хотя я не помню, чтобы он работал и на 10.13.
Это может быть что-то конкретное для Mac, я не уверен, у меня нет с этим опыта. Вы пытались сказать Qt не использовать собственные диалоги? Это флаг QFileDialog::DontUseNativeDialog.






Основываясь на отчете об ошибке в сообщении выше, я обнаружил, что простое добавление фиктивной команды «Выбрать все» в строку меню в MacOS сделает ярлык доступным.
Если вы используете файлы .ui, просто добавьте Выбрать все к Редактировать с ⌘А через Qt Creator.
from PyQt5.QtWidgets import *
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.initMenuBar()
def initUI(self):
self.show()
def initMenuBar(self):
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
editMenu = menubar.addMenu("&Edit")
actionOpen = QAction("Open", self)
actionOpen.triggered.connect(self.openFiles)
actionOpen.setShortcut("Ctrl+O")
fileMenu.addAction(actionOpen)
actionSelectAll = QAction("Select All", self)
actionSelectAll.setShortcut("Ctrl+A")
editMenu.addAction(actionSelectAll)
def openFiles(self):
filenames = QFileDialog.getOpenFileNames()
print(filenames)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Какую платформу вы используете? В Linux все работает как надо (Manjaro KDE)