Using UI class from another directory
-
wrote on 18 Dec 2023, 14:11 last edited by Joimar
Hi everyone, I'm facing some problems with PyQT/Pyside when importing from another directory my UI classes. I'm showing the code below.
Here's my UI Class in "UIClasses" directory
# This Python file uses the following encoding: utf-8 import sys from PySide6.QtWidgets import QApplication, QMainWindow # Important: # You need to run the following command to generate the ui_form.py file # pyside6-uic form.ui -o ui_form.py, or # pyside2-uic form.ui -o ui_form.py #from UIMainWindow import Ui_MainWindow from UIClasses\mainwindow import Ui_MainWindow class MainWindow(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.pressButton) self.ui.actionNew.triggered.connect(self.pressButton) def pressButton(self): self.ui.pushButton.setText("Foi Clicado")
Here's my UI Python File converted from .ui
# -*- coding: utf-8 -*- ################################################################################ ## Form generated from reading UI file 'UIMainWindow.ui' ## ## Created by: Qt User Interface Compiler version 6.6.0 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, QMetaObject, QObject, QPoint, QRect, QSize, QTime, QUrl, Qt) from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QGradient, QIcon, QImage, QKeySequence, QLinearGradient, QPainter, QPalette, QPixmap, QRadialGradient, QTransform) from PySide6.QtWidgets import (QApplication, QMainWindow, QMenu, QMenuBar, QPushButton, QSizePolicy, QStatusBar, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") MainWindow.resize(800, 600) self.actionNew = QAction(MainWindow) self.actionNew.setObjectName(u"actionNew") self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.pushButton = QPushButton(self.centralwidget) self.pushButton.setObjectName(u"pushButton") self.pushButton.setGeometry(QRect(290, 280, 80, 24)) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setObjectName(u"menubar") self.menubar.setGeometry(QRect(0, 0, 800, 21)) self.menuFile = QMenu(self.menubar) self.menuFile.setObjectName(u"menuFile") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName(u"statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuFile.menuAction()) self.menuFile.addAction(self.actionNew) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) # setupUi def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) self.actionNew.setText(QCoreApplication.translate("MainWindow", u"New", None)) self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None)) self.menuFile.setTitle(QCoreApplication.translate("MainWindow", u"File", None)) # retranslateUi
Here's my main file
# This Python file uses the following encoding: utf-8 import sys from PySide6.QtWidgets import QApplication from UIClasses.mainwindow import MainWindow #from mainwindow import MainWindow if __name__ == "__main__": app = QApplication(sys.argv) widget = MainWindow() widget.show() sys.exit(app.exec())
But for some reason I'm having this error
When I change the project to have all files in the same folder, everything works fine. I only have troubles when I try to separete the files in different folders.
-
Hi everyone, I'm facing some problems with PyQT/Pyside when importing from another directory my UI classes. I'm showing the code below.
Here's my UI Class in "UIClasses" directory
# This Python file uses the following encoding: utf-8 import sys from PySide6.QtWidgets import QApplication, QMainWindow # Important: # You need to run the following command to generate the ui_form.py file # pyside6-uic form.ui -o ui_form.py, or # pyside2-uic form.ui -o ui_form.py #from UIMainWindow import Ui_MainWindow from UIClasses\mainwindow import Ui_MainWindow class MainWindow(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.pressButton) self.ui.actionNew.triggered.connect(self.pressButton) def pressButton(self): self.ui.pushButton.setText("Foi Clicado")
Here's my UI Python File converted from .ui
# -*- coding: utf-8 -*- ################################################################################ ## Form generated from reading UI file 'UIMainWindow.ui' ## ## Created by: Qt User Interface Compiler version 6.6.0 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, QMetaObject, QObject, QPoint, QRect, QSize, QTime, QUrl, Qt) from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QGradient, QIcon, QImage, QKeySequence, QLinearGradient, QPainter, QPalette, QPixmap, QRadialGradient, QTransform) from PySide6.QtWidgets import (QApplication, QMainWindow, QMenu, QMenuBar, QPushButton, QSizePolicy, QStatusBar, QWidget) class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") MainWindow.resize(800, 600) self.actionNew = QAction(MainWindow) self.actionNew.setObjectName(u"actionNew") self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.pushButton = QPushButton(self.centralwidget) self.pushButton.setObjectName(u"pushButton") self.pushButton.setGeometry(QRect(290, 280, 80, 24)) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setObjectName(u"menubar") self.menubar.setGeometry(QRect(0, 0, 800, 21)) self.menuFile = QMenu(self.menubar) self.menuFile.setObjectName(u"menuFile") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName(u"statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar.addAction(self.menuFile.menuAction()) self.menuFile.addAction(self.actionNew) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) # setupUi def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) self.actionNew.setText(QCoreApplication.translate("MainWindow", u"New", None)) self.pushButton.setText(QCoreApplication.translate("MainWindow", u"PushButton", None)) self.menuFile.setTitle(QCoreApplication.translate("MainWindow", u"File", None)) # retranslateUi
Here's my main file
# This Python file uses the following encoding: utf-8 import sys from PySide6.QtWidgets import QApplication from UIClasses.mainwindow import MainWindow #from mainwindow import MainWindow if __name__ == "__main__": app = QApplication(sys.argv) widget = MainWindow() widget.show() sys.exit(app.exec())
But for some reason I'm having this error
When I change the project to have all files in the same folder, everything works fine. I only have troubles when I try to separete the files in different folders.
@Joimar said in Using UI class from another directory:
from UIClasses\mainwindow import Ui_MainWindow
Shouldn't it be
from UIClasses.mainwindow import Ui_MainWindow
?
1/2