Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. Using UI class from another directory
Forum Updated to NodeBB v4.3 + New Features

Using UI class from another directory

Scheduled Pinned Locked Moved Unsolved Qt for Python
2 Posts 2 Posters 516 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Joimar
    wrote on 18 Dec 2023, 14:11 last edited by Joimar
    #1

    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

    072efa2d-0934-4040-9016-2c20ab9efc97-image.png

    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.

    J 1 Reply Last reply 18 Dec 2023, 15:37
    0
    • J Joimar
      18 Dec 2023, 14:11

      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

      072efa2d-0934-4040-9016-2c20ab9efc97-image.png

      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.

      J Offline
      J Offline
      jsulm
      Lifetime Qt Champion
      wrote on 18 Dec 2023, 15:37 last edited by
      #2

      @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
      

      ?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1

      1/2

      18 Dec 2023, 14:11

      • Login

      • Login or register to search.
      1 out of 2
      • First post
        1/2
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved