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:
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())
