Браузер файлов с PySide2: получить путь к файлу и затем убить GUI - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть следующий код, и я хочу сделать следующее:

  • Самый важный момент: После того, как я нажал на файл и получил его путь к файлу, я хочу, чтобы GUI вышел, потому что я бы затем просто введите этот путь в другой скрипт (another_script), который я затем импортировал бы

Мои проблемы заключаются в том, что после того, как скрипт успешно напечатает путь к выбранному файлу, GUI не убей себя и я не могу запустить another_script и я застрял в терминале

import sys
from PySide2.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PySide2.QtGui import QIcon

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.openFileNameDialog()

    def openFileNameDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getOpenFileName(self,
            "QFileDialog.getOpenFileName()", 
            "","All Files (*);;Python Files (*.py)", 
            options=options)
        if fileName:
            print(fileName)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
import another_script

1 Ответ

2 голосов
/ 01 апреля 2020

Даже если вы выбрали файл, событие l oop все равно будет продолжать выполняться, возможное решение - вызвать QXApplication.quit () с QTimer, но все еще существует проблема: этот метод сделает exec_ ( ) метод return 0, который принимается sys.exit (), и, следовательно, приложение будет закрыто. Но все вышеперечисленное не является необходимым, поскольку, если вы просто хотите получить путь к файлу, вам не нужно использовать QWidget, вы можете использовать следующее:

import sys
from PySide2.QtWidgets import QApplication, QFileDialog


def get_filename():
    app = QApplication([])
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    fileName, _ = QFileDialog.getOpenFileName(
        None,
        "QFileDialog.getOpenFileName()",
        "",
        "All Files (*);;Python Files (*.py)",
        options=options,
    )
    return fileName


if __name__ == "__main__":
    filename = get_filename()
    if filename:
        print(filename)
...