Error con PyQt4
Yusniel Hidalgo Delgado
yhdelgado en estudiantes.uci.cu
Mar Mar 18 05:27:46 CET 2008
Saludos amigos. Me he encontrado un pedazo de código que resuelve parte de mi problema. O sea, lo que quiero es mostrar una estructura de directorios utilizando un arbol, algo asi como un QTreeWidget. Por lo pronto, lo he estado probando con un QListViewItem que me encontré en un manual. Resulta que cuando trato de poner el arbol en mi ventana principal, este me lance un error diciendo: RuntimeError: the qt and PyQt4.QtCore modules both wrap the QObject class
Adjunto el código del Tree y el código de la ventana Princiapl.
import sys
from qt import *
class DirectoryTree(QListViewItem):
def __init__(self, parent, name=None):
QListViewItem.__init__,(self,parent)
if isinstance(parent, QListViewItem):
self.p = None
self.f = '/var/www/prueba/'
else:
self.p = parent
self.f = name
self.c = []
self.readable = 1
def setOpen(self, o):
if o and not self.childCount():
s = self.fullName()
if (not os.path.isdir(s)):
self.readable == 0
return
if (not os.access(s, os.F_OK or os.R_OK)):
self.readable == 0
return
files=os.listdir(s)
if files:
for fileName in files:
f=os.path.join(s, fileName)
if fileName == "." or fileName == "..":
continue
elif os.path.islink(f):
d = QListViewItem(self, fileName, 'Symbolic Link')
elif os.path.isdir(f):
d = Directory(self, fileName)
else:
if os.path.isfile(f):
t = 'File'
else:
print f
t = 'Special'
d = QListViewItem(self, fileName, t)
self.c.append(d)
QListViewItem.setOpen(self, o)
def setup(self):
self.setExpandable(1)
QListViewItem.setup(self)
def fullName(self):
if self.p:
s = self.p.fullName() + self.f + '/'
else:
s = '/var/www/prueba/'
return s
def text(self, column):
if column == 0:
return self.f
elif self.readable:
return 'Directory'
else:
return 'Unreadable Directory'
Este es el codigo del arbol, cuando lo mando a correr me pincha todo ok, pero cuando lo llamo desde mi ventana principal, me da el error mencionado arriba.
Este es el codigo en la ventana generada por Qt4-Designer:
self.listV=QListView(self.tab)
self.treePrpj=DirectoryTree(self.listV)
self.treePrpj.setOpen(1)
self.listV.show()
y este es el codigo de la clase que llama al visual:
import sys
from PyQt4 import QtCore,QtGui
class PySfGui(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
from main import Ui_MainWindow
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.imprimir()
#QtCore.QObject.connect(self.ui.textEdit,QtCore.SIGNAL("clicked()"),self.imprimir())
def imprimir(self):
self.ui.textEdit.setPlainText("Este es el texto")
if __name__=="__main__":
app=QtGui.QApplication(sys.argv)
myapp=PySfGui()
myapp.show()
SystemExit(app.exec_())
Disculpen la magnitud del correo, pero es que ya no hayo que hacer, no entiendo que pueda ser, supongo que sea incompatibilidad entre las librerias QT y PyQT4. Saludos a todos.
------------------------------------------------------------
Yusniel Hidalgo Delgado
Brigada 4301
Universidad de las Ciencias Informáticas
------------------------------------------------------------
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es