Can´t integrate QTabWidget into a Layout besides other one´s

Heads up! You've already completed this tutorial.

Nudlwoodz7756 | 2020-10-06 13:15:53 UTC | #1

Hi together,

i´m new to Python and am stuck with a problem where I can´t find a solution. Perhaps (or nearly sure) the problem exists just between the Headset ^^

I´m trying to (actually still as an exercise) create a Layout in PyQt5 and trying to implement different Layouts into 1 QHBoxLayout. Everything works fine, but I am not able to integrate a QTabWidget beside other Layouts. When I´m trying to do so, it´s getting the only Layout on the surface as if no other one´s would have been implemented.

Here´s my code :

python
def createLayout(self):

    ############ LayoutTests #############################

    HLayout1 = QtWidgets.QHBoxLayout()
    VLayout1 = QtWidgets.QVBoxLayout()
    VLayout2 = QtWidgets.QVBoxLayout()
    VLayout3 = QtWidgets.QVBoxLayout()
    VLayout4 = QtWidgets.QVBoxLayout()
    VLayout5 = QtWidgets.QVBoxLayout()
    HLayout2 = QtWidgets.QHBoxLayout()

    GridLayout = QtWidgets.QGridLayout()
    StackedLayout = QtWidgets.QStackedLayout()
    TabWidget = QtWidgets.QTabWidget()

    VLayout1.addWidget(Color("black"))
    VLayout1.addWidget(Color("red"))
    VLayout1.addWidget(Color("yellow"))

    VLayout1.setContentsMargins(0,0,20,0)
    VLayout1.setSpacing(20)

    HLayout1.addLayout(VLayout1)

    HLayout1.addWidget(Color("green"))


    VLayout2.addWidget(Color("blue"))
    VLayout2.addWidget(Color("purple"))

    HLayout1.addLayout(VLayout2)


    GridLayout.addWidget(Color("Grey"), 0, 3)
    GridLayout.addWidget(Color("black"), 1, 0)
    GridLayout.addWidget(Color("DarkGrey"), 1, 1)
    GridLayout.addWidget(Color("orange"), 2, 1)

    HLayout1.addLayout(GridLayout)


    TabWidget.setDocumentMode(False)
    TabWidget.setTabPosition(QtWidgets.QTabWidget.North)
    TabWidget.setMovable(True)

    Tab1 = QtWidgets.QWidget()
    Tab2 = QtWidgets.QWidget()

    TabWidget.addTab(Tab1, "Tab1")
    TabWidget.addTab(Tab2, "Tab2")

    VLayout3.addWidget(TabWidget)

    **# here´s the Problem beginning, whenever I want to integrate the VLayout3 **
   ** # into the HLayout1 it´s getting the one and only **

    ** #HLayout1.addLayout(VLayout3) **

    Widget = QtWidgets.QWidget()
    Widget.setLayout(HLayout1)
    self.setCentralWidget(Widget)

This is the Layout before and after : vorher_nachher|690x188

When activating again the Line "HLayout1.addLayout(VLayout3) " it´s getting the only one that´s visible.

Packaging Python Applications with PyInstaller by Martin Fitzpatrick — This step-by-step guide walks you through packaging your own Python applications from simple examples to complete installers and signed executables.

More info Get the book

I don´t understand why it´s getting dominant as the only one. Isn´t it possible to have a QTabWidget in a Layout besides other Layouts ?


Nudlwoodz7756 | 2020-11-16 09:35:58 UTC | #2

I´ll answer it for myself ;)

I managed to get it running.

Obvisously it´s just possible to add a QTabWidget inside a GroupBox. So, GroupBoxes besides GroupBoxes where the QTabWindow is inside is possible. Without the GroupBoxes it´s becoming dominant like a Borg.


Packaging Python Applications with PyInstaller by Martin Fitzpatrick — This step-by-step guide walks you through packaging your own Python applications from simple examples to complete installers and signed executables.

More info Get the book

Well done, you've finished this tutorial! Mark As Complete
[[ user.completed.length ]] completed [[ user.streak+1 ]] day streak

Can´t integrate QTabWidget into a Layout besides other one´s was written by Martin Fitzpatrick .

Martin Fitzpatrick has been developing Python/Qt apps for 8 years. Building desktop applications to make data-analysis tools more user-friendly, Python was the obvious choice. Starting with Tk, later moving to wxWidgets and finally adopting PyQt.