[PyQt] file dialog as input to io.read.array in scipy

massimo di stefano massimodisasha at yahoo.it
Mon Oct 29 02:28:10 GMT 2007


hi,

i'm tring to write a gui for a python module,


the module run fine in the python shall.

i'm using it in this manner :

from affine import affine
print affine('/path/tu/file_1', '/path/tu/file_2', '/path/tu/file_3',  
'/path/tu/file_3')




the module affine is :

#!/usr/bin/env python
from scipy import io, linalg
from numpy import *
from pylab import save
def affine(input_uno, input_due, input_tre, output):
	L = io.read_array(input_uno)
	L = io.read_array(input_due)
	L = io.read_array(input_tre)
	L = io.read_array(output)




the gui code is :


#!/usr/bin/env python

"""PyQt4 port of the dialogs/standarddialogs example from Qt v4.x"""

import sys
from PyQt4 import QtCore, QtGui
from affine import affine
from conforme import conforme



class Dialog(QtGui.QDialog):
     MESSAGE = QtCore.QT_TR_NOOP("<p>Message boxes have a caption, a  
text, and up to "
                                 "three buttons, each with standard  
or custom texts.</p>"
                                 "<p>Click a button or press Esc.</p>")

     def __init__(self, parent=None):
         QtGui.QDialog.__init__(self, parent)
         self.openFilesPath = QtCore.QString()
         self.errorMessageDialog = QtGui.QErrorMessage(self)

         frameStyle = QtGui.QFrame.Sunken | QtGui.QFrame.Panel



         self.exit = QtGui.QPushButton("Exit", self)

         self.exit.setFont(QtGui.QFont("Times", 18, QtGui.QFont.Bold))

         self.connect(self.exit, QtCore.SIGNAL("clicked()"),
                      QtGui.qApp, QtCore.SLOT("quit()"))


         self.convert = QtGui.QPushButton("Convert", self)

         self.convert.setFont(QtGui.QFont("Times", 18,  
QtGui.QFont.Bold))

         self.connect(self.convert, QtCore.SIGNAL("clicked()"),
         self.saveFunction)

         self.affineRadioButton = QtGui.QRadioButton(self.tr("Affine"))
         self.conformeRadioButton = QtGui.QRadioButton(self.tr 
("Conforme"))

         self.openFileNameLabel = QtGui.QLabel()
         self.openFileNameLabel.setFrameStyle(frameStyle)
         self.openFileNameButton = QtGui.QPushButton(self.tr 
("file_datum_1"))
         self.connect(self.openFileNameButton, QtCore.SIGNAL("clicked 
()"), self.setOpenFileName)

         self.openFileNameLabel_2 = QtGui.QLabel()
         self.openFileNameLabel_2.setFrameStyle(frameStyle)
         self.openFileNameButton_2 = QtGui.QPushButton(self.tr 
("file_datum_2"))
         self.connect(self.openFileNameButton_2, QtCore.SIGNAL 
("clicked()"), self.setOpenFileName_2)

         self.openFileNameLabel_3 = QtGui.QLabel()
         self.openFileNameLabel_3.setFrameStyle(frameStyle)
         self.openFileNameButton_3 = QtGui.QPushButton(self.tr 
("file_datum_3"))
         self.connect(self.openFileNameButton_3, QtCore.SIGNAL 
("clicked()"), self.setOpenFileName_3)

         self.saveFileNameLabel = QtGui.QLabel()
         self.saveFileNameLabel.setFrameStyle(frameStyle)
         self.saveFileNameButton = QtGui.QPushButton(self.tr 
("file_to_save"))
         self.connect(self.saveFileNameButton, QtCore.SIGNAL("clicked 
()"), self.setSaveFileName)

         layout = QtGui.QGridLayout()
         layout.setColumnStretch(1, 1)
         layout.setColumnMinimumWidth(1, 250)

         layout.addWidget(self.openFileNameButton, 1, 0)
         layout.addWidget(self.openFileNameLabel, 1, 1)
         layout.addWidget(self.openFileNameButton_2, 2, 0)
         layout.addWidget(self.openFileNameLabel_2, 2, 1)
         layout.addWidget(self.openFileNameButton_3, 3, 0)
         layout.addWidget(self.openFileNameLabel_3, 3, 1)
         layout.addWidget(self.saveFileNameButton, 4, 0)
         layout.addWidget(self.saveFileNameLabel, 4, 1)
         layout.addWidget(self.exit, 5, 0)
         layout.addWidget(self.exit, 5, 1)
         layout.addWidget(self.convert, 6, 0)
         layout.addWidget(self.convert, 6, 1)
         layout.addWidget(self.affineRadioButton, 7, 0)
         layout.addWidget(self.conformeRadioButton, 8, 0)

         self.setLayout(layout)
         self.setWindowTitle(self.tr("DATUM CONVERTER"))


     def saveFunction(self):
	my_file_1=QtCore.QFile(self.openFileNameLabel.text())
	my_file_2=QtCore.QFile(self.openFileNameLabel.text())
	my_file_3=QtCore.QFile(self.openFileNameLabel.text())
	my_file_4=QtCore.QFile(self.saveFileNameLabel.text())
#	print my_file_1,self.openFileNameLabel_2.text 
(),self.openFileNameLabel_3.text(),self.saveFileNameLabel.text()
	print affine(my_file_1, my_file_2, my_file_3, my_file_4)


     def setOpenFileName_3(self):
	fileName_3 = QtGui.QFileDialog.getOpenFileName(self,
	self.tr("file_datum_3"),
	self.openFileNameLabel_3.text(),
	self.tr("ALL Files (*);;Text Files (*.txt)"))
	if not fileName_3.isEmpty():
		self.openFileNameLabel_3.setText(fileName_3)




     def setOpenFileName(self):
	fileName = QtGui.QFileDialog.getOpenFileName(self,
	self.tr("file_datum_1"),
	self.openFileNameLabel.text(),
	self.tr("All Files (*);;Text Files (*.txt)"))
	if not fileName.isEmpty():
		self.openFileNameLabel.setText(fileName)


     def setOpenFileName_2(self):
	fileName_2 = QtGui.QFileDialog.getOpenFileName(self,
	self.tr("file_datum_2"),
	self.openFileNameLabel_2.text(),
	self.tr("ALL Files (*);;Text Files (*.txt)"))
	if not fileName_2.isEmpty():
		self.openFileNameLabel_2.setText(fileName_2)

     def setSaveFileName(self):
	fileName = QtGui.QFileDialog.getSaveFileName(self,
	self.tr("file_to_save"),
	self.saveFileNameLabel.text(),
	self.tr("All Files (*);;Text Files (*.txt)"))
	if not fileName.isEmpty():
		self.saveFileNameLabel.setText(fileName)

if __name__ == '__main__':
     app = QtGui.QApplication(sys.argv)
     dialog = Dialog()
     sys.exit(dialog.exec_())



but i've an error :

Error in sys.excepthook:
Traceback (most recent call last):
   File "/Applications/TextMate.app/Contents/SharedSupport/Bundles/ 
Python.tmbundle/Support/PyMate/sitecustomize.py", line 66, in  
tm_excepthook
     io = fdopen(error_fd, 'w')
OSError: [Errno 9] Bad file descriptor

Original exception was:
Traceback (most recent call last):
   File "/Users/epifanio/Desktop/pyconvertgui.py", line 94, in  
saveFunction
     print affineg(my_file_1, my_file_2, my_file_3, my_file_4)
   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ 
python2.5/site-packages/tring.py", line 7, in tring
     L = io.read_array(input_uno)
   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ 
python2.5/site-packages/scipy/io/array_import.py", line 363, in  
read_array
     ascii_object = ascii_stream(fileobject, lines=lines,  
comment=comment, linesep=linesep)
   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ 
python2.5/site-packages/scipy/io/array_import.py", line 142, in __init__
     self._pos = self.file.tell()
AttributeError: tell


seems that io.read_array fail to load my files :-(

maybe it want an object file as input,  but the gui pass it the input  
as a string ... but i have not clue about.

thanks for any suggestion!

massimo.







More information about the PyQt mailing list