PyQt: por que a adição de uma definição de classe manequim no meu arquivo fazer a falência de aplicação?

StackOverflow https://stackoverflow.com/questions/1233711

  •  22-07-2019
  •  | 
  •  

Pergunta

Considere o código abaixo:

 #!/usr/bin/env python


from PyQt4 import QtCore, QtGui

import os,sys

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)  
        self.listWidget = QtGui.QListWidget(None)
        self.setCentralWidget(self.listWidget) 

if __name__ == '__main__':
    app = QtGui.QApplication (sys.argv)
    mainWin = MainWindow ()
    mainWin.show ()
    sys.exit (app.exec_())

Funciona ok. Agora, se eu adicionar uma classe manequim (que herda de classe de um módulo QtGui) no escopo global ...

class MainWindow(QtGui.QMainWindow):
... # unchanged

class MyWidget(QtGui.QWidget):
   def __init__(self):
        super(MyWidget, self).__init__()

if __name__ == '__main__':
... # unchanged

... Quando eu lançar o script eu recebo o erro:

TypeError: argumento 1 de QMainWindow.setCentralWidget () tem um tipo inválido

Esta mensagem de erro é enigmática para mim como eu não pode conectá-lo à modificação feita. Você tem uma idéia do que poderia ser a fonte deste erro?

Foi útil?

Solução

Não é possível reproduzir o problema como relatado: o seguinte código exato

from PyQt4 import QtCore, QtGui

import os, sys

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)  
        self.listWidget = QtGui.QListWidget(None)
        self.setCentralWidget(self.listWidget) 

class MyWidget(QtGui.QWidget):
   def __init__(self):
        super(MyWidget, self).__init__()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

funciona muito bem para mim (mostrando uma janela vazia, claro). Então eu acho que é para baixo para detalhes versões! Eu estou usando Python 2.5.1 no Mac OS X 10.5.7 fornecido pelo sistema e adicionando um

print QtCore.PYQT_VERSION_STR

shows que eu estou na versão 4.5.1 do PyQt. E você?

Outras dicas

Eu não tenho trabalhado com PyQt antes, mas você não se esqueça de chamar o construtor da superclasse aqui?

class MyWidget(QtGui.QWidget):
   def __init__(self):
      # Where is the call to QtGui.QWidget's init ?
      pass
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top