有没有办法让Pytt中的QtGui.QFileDialog.getSaveFileName成为条件?

时间:2014-10-13 18:37:21

标签: python pyqt

所以在我的代码中,我有一个简单的getSaveFileName对话框,如下所示:

saveFileName = QtGui.QFileDialog.getSaveFileName(self, "Save File","/some/file/directory/")

在对话框中,如果您尝试覆盖文件,对话框会在对话框关闭之前提示“是否确定要重写”的消息框。我想实现相同的东西,但条件不同。我想检查文件是否在特定位置,如果是,我想让它抛出一个带有yes |的错误毫无疑问,结果与覆盖消息出现时的结果相同。在对话框关闭之前有没有办法实现这个?我已经有办法在它关闭后这样做了,但这是不对的......

1 个答案:

答案 0 :(得分:0)

考虑一下:

class D(QtGui.QFileDialog):
    def __init__(self,parent=None):
        QtGui.QFileDialog.__init__(self,parent)
        self.currentChanged.connect(self.check_first)
        for bb in self.children():
            if bb.__class__ == QtGui.QDialogButtonBox:
                self.OK = bb.buttons()[0]
            if bb.__class__ == QtGui.QLineEdit:
                bb.textChanged.connect(self.check_first)

    def check_first(self, filestring):
        print "check"
        if os.path.exists(self.selectedFiles()[0]):
            self.OK.setEnabled(True)
            print "OK"
        else:
            self.OK.setEnabled(False)
            print "Not OK"

您可以将自己的支票放入check_first,在这种情况下是文件的存在。我找不到比定位类更好的定位子小部件的方法,但这似乎有用。