簡體   English   中英

PyQt5 - 在 QFileDialog 上單擊取消關閉應用程序

[英]PyQt5 - Clicking Cancel on QFileDialog Closes Application

我注意到,使用以下代碼,如果您選擇在 FileDialog 上單擊“取消”以獲取“導入文件”,整個應用程序將關閉,而不是返回菜單並等待不同的選擇。 我怎樣才能讓它返回到主菜單?

(注意:我注意到如果在初始文件對話框調用后我沒有放置任何東西,它運行良好。)

代碼:

import sys
import xml.etree.ElementTree as et
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class MainMenu(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        layout = QGridLayout()

        # Create Objects for Main Menu
        logoLabel = QLabel("TESTAPP")
        logoFont = QFont("Broadway", 48)
        logoLabel.setFont(logoFont)
        versionLabel = QLabel("Version 0.1a")
        copyrightLabel = QLabel("Copyright 2016")
        importButton = QPushButton("Import File")
        quitButton = QPushButton("Quit")

        # Set Locations of Widgets
        layout.addWidget(logoLabel, 0, 0)
        layout.addWidget(versionLabel, 1, 0)
        layout.addWidget(copyrightLabel, 2, 0)
        layout.addWidget(importButton, 4, 0)
        layout.addWidget(quitButton, 5, 0)
        self.setLayout(layout)
        self.setWindowTitle("NESSQL")

        # Connect Buttons to Actions
        importButton.clicked.connect(self.importFile)
        quitButton.clicked.connect(self.close)

    def importFile(self):
        # Open dialog box to get the filename
        file = QFileDialog.getOpenFileName(self, caption="File to Import", directory=".",
                                           filter="All Files (*.*)")
        data = et.parse(file)
        root = data.getroot()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainMenu = MainMenu()
    mainMenu.show()
    app.exec_()

通過保持檢查文件是否為空的條件,您可以避免此問題。 在你的情況下是這樣的。

def importFile(self):
    # Open dialog box to get the filename
    file = QFileDialog.getOpenFileName(self, caption="File to Import", 
                              directory=".",filter="All Files (*.*)")

    if not file[0] == "":
        data = et.parse(file)
        root = data.getroot()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM