es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyCharm loadUi findChild – referencia de atributo no resuelta

Utilizo PyCharm e importé un archivo “.ui” de Qt Designer con PyQt6:

“`
from PyQt6 import QtWidgets, uic

class Ui(QtWidgets.QMainWindow):
def init(self):
super(Ui, self).init()
uic.loadUi(‘C:/Users/M/PycharmProjects/2021-12-15_book table/book.ui’, self)

self.pushButton_1 = self.findChild(QtWidgets.QPushButton, "pushButton_1")
self.pushButton_1.setText('agregar libro')
self.pushButton_1.clicked.connect(self.add_book)
#[...]

app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec()

PyCharm siempre muestra los errores:
– “Referencia de atributo no resuelta ‘setText’ o ‘Ui'”
– “Referencia de atributo no resuelta ‘connect’ o ‘Ui'”
entonces entiendo que findChild no funciona.

¿Tienes alguna idea de cómo resolver eso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede ser causado por una versión desactualizada de PyQt6 o por la falta de una biblioteca de PyQt6.

    Para resolver el problema, puedes intentar seguir los siguientes pasos:

    1. Verifica si PyQt6 está instalado en tu sistema. Puedes hacer esto ejecutando el comando pip show pyqt6 en tu terminal o símbolo del sistema. Si no está instalado, puedes instalarlo ejecutando pip install pyqt6.
    2. Actualiza tu biblioteca de PyQt6 a la última versión ejecutando pip install --upgrade pyqt6.
    3. Asegúrate de importar los módulos correctos en tu código. Deberías importar lo siguiente:

      from PyQt6 import QtWidgets, uic

      Si todavía experimentas los mismos mensajes de error después de intentar estos pasos, puede ser útil verificar que el archivo .ui que estás intentando cargar sea válido y no esté corrupto. También puedes intentar configurar manualmente la ruta hacia el archivo .ui en lugar de utilizar una ruta absoluta, utilizando os.path.join para crear la ruta.

Comments are closed.