Когда отображается диалоговое окно выбора файлов, я хочу предварительно выбрать файлы в проекте, которые уже настроены как часть этого проекта, чтобы пользователь мог выбрать новые файлы ИЛИ отменить выбор существующих (т.е. ранее выбранных) файлы.
Этот ответ предполагает возможность множественного выбора.
Для этого MRE создайте 3 файла и поместите их в подходящее ref_dir
:
from PyQt5 import QtWidgets
import sys
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
self.button = QtWidgets.QPushButton('Test', self)
self.button.clicked.connect(self.handle_button)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.button)
def handle_button(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
ref_dir = 'D:\\temp'
files_list = ['file1.txt', 'file2.txt', 'file3.txt']
fd = QtWidgets.QFileDialog(None, 'Choose project files', ref_dir, '(*.txt)')
fd.setFileMode(QtWidgets.QFileDialog.ExistingFiles)
fd.setOptions(options)
# fd.setVisible(True)
for file in files_list:
print(f'selecting file |{file}|')
fd.selectFile(file)
string_list = fd.exec()
print(f'string list {string_list}')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
К сожалению, несмотря на то, что ExistingFiles
был выбран в качестве режима файла, я обнаружил, что только последний выбранный файл имеет выбор... но я хочу, чтобы все три были выбраны при отображении диалогового окна.
Я попытался поэкспериментировать с setVisible
, чтобы увидеть, можно ли как-то добиться множественного выбора после отображения диалогового окна, но это не сработало.