How to get a QFormLayout() next to a GLViewWidget() in a QVBoxLayout()

50 views Asked by At

I am trying to get a QFormLayout() next to a GLViewWidget() in a QVBoxLayout() in QMainWindow() using the below code.

However, I struggle to find out how to display both at once, I can only display one at a time.

My aim is to have something like this:

enter image description here

Any idea, how to achieve that?

import sys
import pyqtgraph.opengl as gl
from PyQt6.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QHBoxLayout, QGroupBox, QFormLayout,\
    QLabel, QLineEdit, QWidget
from PyQt6.QtGui import QIntValidator


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        first_view_widget = gl.GLViewWidget()
        second_view_widget = gl.GLViewWidget()
        third_view_widget = gl.GLViewWidget()

        central_widget = QWidget()
        vertical_layout = QVBoxLayout()
        central_widget.setLayout(vertical_layout)
        self.setCentralWidget(central_widget)
        horizontal_layout = QHBoxLayout()
        horizontal_layout.addWidget(first_view_widget)
        horizontal_layout.addWidget(second_view_widget)

        params = QHBoxLayout()
        target_distance = QLabel('First row')
        distance_input = QLineEdit()
        distance_input.setText(str(100))
        only_integers = QIntValidator()
        distance_input.setValidator(only_integers)
        air_pressure = QLabel('Second row')
        pressure_input = QLineEdit()
        pressure_input.setText(str(1.01325))
        only_integers = QIntValidator()
        pressure_input.setValidator(only_integers)

        f_layout = QFormLayout()
        f_layout.addRow(target_distance, distance_input)
        f_layout.addRow(air_pressure, pressure_input)

        params.addLayout(f_layout)
        params.addWidget(third_view_widget)

        group_box = QGroupBox('Parameters')
        group_box.setLayout(params)
        vertical_layout.addWidget(group_box)
        vertical_layout.addLayout(params)
        vertical_layout.addLayout(horizontal_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.showMaximized()
    sys.exit(app.exec())

0

There are 0 answers