Hi,
it seems that QFileDialog "fileMode" can be set only once on Mac OS
X.
All calls to QFileDialog.setFileDIalog (after the first one) are
ignored.
Mac OS X 10.5.8
Python 2.6.2
Qt 4,5,2
SIP 4.8.2
PyQt4 4.5.4
Attached a short example that reproduces the issue.
It works perfectly on Ubuntu 9.04.
# Run 1: first select a file
chooseFile1: 0
chooseFile2 (ExistingFile=1): 1
chooseFile3: 1
chooseDir1: 1
chooseDir2 (Directory=2): 1 # <=== should be 2
chooseDir3: 1
# Run 2: first select a directory
chooseDir1: 0
chooseDir2 (Directory=2): 2
chooseDir3: 2
chooseFile1: 2
chooseFile2 (ExistingFile=1): 2 # <=== should be 1
chooseFile3: 2
Can please anyone confirm?
Thanks
--
Antonio Valentino
#!/usr/bin/env python
# -*- encoding: UTF8 -*-
import sys
from PyQt4 import QtCore, QtGui
class TestDialog(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
self.d = QtGui.QFileDialog(self)
#self.d.setModal(True)
vlayout = QtGui.QVBoxLayout()
hlayout = QtGui.QHBoxLayout()
self.filelabel = QtGui.QLabel()
self.filelabel.setMinimumSize(200, 0)
self.filelabel.setFrameStyle(QtGui.QFrame.Box)
hlayout.addWidget(self.filelabel)
button = QtGui.QPushButton('File')
button.connect(button, QtCore.SIGNAL('clicked()'), self.chooseFile)
hlayout.addWidget(button)
vlayout.addLayout(hlayout)
hlayout = QtGui.QHBoxLayout()
self.dirlabel = QtGui.QLabel()
self.dirlabel.setMinimumSize(200, 0)
self.dirlabel.setFrameStyle(QtGui.QFrame.Box)
hlayout.addWidget(self.dirlabel)
button = QtGui.QPushButton('Dir')
button.connect(button, QtCore.SIGNAL('clicked()'), self.chooseDir)
hlayout.addWidget(button)
vlayout.addLayout(hlayout)
self.setLayout(vlayout)
def chooseFile(self):
print 'chooseFile1:', self.d.fileMode()
self.d.setFileMode(QtGui.QFileDialog.ExistingFile)
print 'chooseFile2 (ExistingFile=%s): %s' % (
QtGui.QFileDialog.ExistingFile, self.d.fileMode())
if self.d.exec_():
self.filelabel.setText(self.d.selectedFiles()[0])
print 'chooseFile3:', self.d.fileMode()
def chooseDir(self):
print 'chooseDir1:', self.d.fileMode()
self.d.setFileMode(QtGui.QFileDialog.Directory)
print 'chooseDir2 (Directory=%s): %s' % (
QtGui.QFileDialog.Directory, self.d.fileMode())
if self.d.exec_():
self.dirlabel.setText(self.d.selectedFiles()[0])
print 'chooseDir3:', self.d.fileMode()
def test_filedialog():
app = QtGui.QApplication(sys.argv)
d = TestDialog()
d.show()
sys.exit(app.exec_())
if __name__ == '__main__':
test_filedialog()
_______________________________________________
PyQt mailing list [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt