Part 1: Understanding Subwidgets in PyQt for Maya and Unreal 07

Posted by


In this tutorial, we will learn about working with subwidgets in PyQt for Maya and Unreal. Subwidgets allow you to create custom widgets within your main window or dialog, giving you the flexibility to create more complex user interfaces.

To get started, let’s first create a new QWidget class that will serve as our subwidget. This class will inherit from QWidget and will contain any additional widgets or layout that you want to include in your subwidget. Here’s an example of a simple subwidget class:

from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout

class SubWidget(QWidget):
    def __init__(self):
        super(SubWidget, self).__init__()

        self.label = QLabel("This is a subwidget")

        layout = QVBoxLayout()
        layout.addWidget(self.label)

        self.setLayout(layout)

Next, we need to add this subwidget to our main window or dialog. To do this, we’ll first import our subwidget class and then create an instance of it within our main window class. Here’s an example of how you can add a subwidget to a QMainWindow class:

from PyQt5.QtWidgets import QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("Main Window")
        self.setGeometry(100, 100, 600, 400)

        self.subwidget = SubWidget()
        self.setCentralWidget(self.subwidget)

In this code snippet, we’ve created an instance of our SubWidget class and set it as the central widget of our QMainWindow instance. This will display our subwidget within the main window.

You can also add multiple subwidgets to your main window by using layout managers such as QVBoxLayout or QHBoxLayout. Here’s an example of adding multiple subwidgets using a QVBoxLayout:

from PyQt5.QtWidgets import QVBoxLayout

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init()

        self.setWindowTitle("Main Window")
        self.setGeometry(100, 100, 600, 400)

        layout = QVBoxLayout()

        subwidget1 = SubWidget()
        subwidget2 = SubWidget()

        layout.addWidget(subwidget1)
        layout.addWidget(subwidget2)

        self.setLayout(layout)

In this code snippet, we’ve created two instances of our SubWidget class and added them to a QVBoxLayout layout. The layout is then set as the main layout of our QMainWindow instance.

In the next part of this tutorial, we will learn how to interact with subwidgets and pass data between them. Stay tuned for Part 2!