PyQt5 - как вывести Qfiledialog на передний план?

Мой код использует PyQt, чтобы открыть диалог выбора папки. Как только папка выбрана, она свернута. Я бы хотел, чтобы диалог всплывал перед любыми другими окнами. Я еще не смог найти решение. Какие-либо предложения?

from sys import executable, argv
from subprocess import check_output
from PyQt5.QtWidgets import QFileDialog, QApplication

def gui_fname(directory=''):
    file = check_output([executable, __file__, directory])
    return file.strip()

if __name__ == "__main__":
    directory = argv[1]
    app = QApplication([directory])
    folderpath = QFileDialog.getExistingDirectory(None, "Select folder")

1 ответ

Решение

Я думаю, что ваша проблема исходит из "Нет" в следующей функции.folderpath = QFileDialog.getExistingDirectory(None, "Select folder")

Модальность диалога не может быть установлена, потому что у него нет родителя. Обычно вместо None у нас есть self,

РЕДАКТИРОВАТЬ: Конечно, приложение не наследует от QWidget. Извини за это.

используйте это вместо Я проверил это на работе:

import sys
from subprocess import check_output
from PyQt5.QtWidgets import QFileDialog, QApplication, QWidget

def gui_fname(directory=''):
    file = check_output([executable, __file__, directory])
    return file.strip()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    wid = QWidget()
    folderpath = QFileDialog.getExistingDirectory(wid, "Select folder")
    sys.exit(app.exec_())
Другие вопросы по тегам