为什么pyqt5 app在创建设置为DontUseNativeDialog的QFileDialog时报告“无法创建collat​​or:4”?

时间:2018-03-31 06:16:43

标签: python-3.x qt5 pyqt5

我有一个程序,我运行,当我点击顶部按钮时,它打印到控制台“无法创建collat​​or:4”。文件对话框仍然打开,我仍然可以选择一个文件。当我点击打开它再次报告该混乱。

我怎样才能解决这个问题。我知道如果我不使用

opts = opts | QFileDialog.DontUseNativeDialog

然后它会工作但是我得到一个特定于windows / linux / etc的对话框,它从qt窗口外观看起来。

import time
import sys

from PyQt5.QtCore import QObject, QThread, pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QApplication, QPushButton, QTextEdit, QVBoxLayout, QWidget, QGridLayout, QAction, QFileDialog
from PyQt5.QtGui import QIcon      

class Main_Widget(QWidget, QObject):

    sigStop = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.setWindowTitle("WonderCloud Main Window")
        Main_Window = QGridLayout()
        self.setLayout(Main_Window)
        self.resize(800, 400)


        self.fileDia = FileDia()
        self.btnSelectConfigFile = QPushButton()
        #self.btnSelectConfigFile.clicked.connect(self.start_worker)
        ##self.btnSelectConfigFile.clicked.connect(self.fileDia.selectFileNameDialog)
        self.btnSelectConfigFile.clicked.connect(self.selectFileNameDialog)
        self.btnSelectConfigFile.setText("Select Configuration File")

        self.btnSetConfigFileAndCont = QPushButton()
        #self.btnSetConfigFileAndCont.clicked.connect(self.start_worker)
        self.btnSetConfigFileAndCont.setText("Set Configuration And Continue")

        Main_Window.addWidget(self.btnSelectConfigFile)
        Main_Window.addWidget(self.btnSetConfigFileAndCont)

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

if __name__ == "__main__":
    app = QApplication([])

    window = Main_Widget()
    window.show()

    sys.exit(app.exec_()) 

0 个答案:

没有答案