GridLayout im QStackWidget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
ConanDerBarbar
User
Beiträge: 19
Registriert: Donnerstag 21. März 2019, 00:52

Halo liebes Forum,

Vielleicht bin ich einfach zu blöd und sehe das Offensichtliche nicht, aber ich brauche definitiv Hilfe.

Ich bin gerade dabei ein Programm zu programmieren, welches mehrere Tabs enthält. Ich öffne einen Einen Neuen Tab Einstellungen über einen Button:

Code: Alles auswählen

    
    def ButtonEinstellungen(self):
        self.btnEinstellung.setText("Einstellungen")
        self.btnEinstellung.setMinimumSize(120, 50)
        self.btnEinstellung.clicked.connect(self.Einstellungen)
        
    def Einstellungen(self):
        self.tabs.addTab(self.tabEinstellungen, "Einstellungen")
        self.TabEinstellungen()
Dieser führt dann Zusätzlich TabEinstellungen aus:

Code: Alles auswählen

    def TabEinstellungen(self):
        
        
        
        
        #Definieren des Grids für Tab Einstellungen
       
        self.SizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        
        self.NeuesWidget = QWidget()      
        self.ltabEinstellungen = QGridLayout(self.NeuesWidget)
        
        """Stacked Widget"""
        self.stackedEinstellungen = QStackedWidget(self.tabEinstellungen)
        self.stackedEinstellungen.setSizePolicy(self.SizePolicy)
        self.stackedEinstellungen.addWidget(self.NeuesWidget)

        
        #Definieren von Buttons
        self.btnOperator = QPushButton()
       
       
        #Platzieren am Grid
        self.ltabEinstellungen.addWidget(self.btnOperator, 0, 0)
    
        #Ausführen der Programme 
        self.ButtonOperator()
Der Tab öffnet sich und der Button Operator ist auch wie gewünscht zu sehen, allerdings befindet dieser sich links oben in der Ecke, obwohl er zum jetzigen Programmzeitpunkt den ganzen Platz des Tabs einnehmen müsste. Mit

Code: Alles auswählen

 self.stackedEinstellungen.setMinimumSize
kann ich die größe zwar einstellen, hätte aber ganz gerne, dass das StackedWidget automatisch die Größe von dem Tab übernimmt. Ich habe irgendwann angefangen mit der SizePolicy zumzuspielen, aber ich bin noch nicht so versiert in PyQT.

Ohne das Stacked Widget hab ich überhaupt keine Probleme mit Größe und Layout. Ich würde zudem noch gerne beim GridLayout bleiben und ungerne auf das QBoxLayout umsteigen, da ich noch mehrere Tabs habe und gerne das Layout einheitlich halten würde.

Ich nutze PyQt5 und Python 3.6

Ich bin nun schon seit 2 Tagen am rumgooglen und finde iwie nichts dass hilft, wenn ihr auch nichts wisst muss ich das StackedWidget einfach mit setMInimumSize anpassen. Das würde ich aber wie bereits gesagt einfach ungerne machen.

Danke schonmal im voraus.
ConanDerBarbar
User
Beiträge: 19
Registriert: Donnerstag 21. März 2019, 00:52

Mir ist gerade aufgefallen, auch wenn ich eine Minimale Größe für das Stacked Widget setzte, es nicht größer wird, wenn ich das Fenster Größer ziehe. Mit allen anderen Tabs ohne StackedWidget funktioniert das prima....
ConanDerBarbar
User
Beiträge: 19
Registriert: Donnerstag 21. März 2019, 00:52

Mir wurde es jetzt von anderer Stelle erklärt. Falls es jemanden interessieren sollte:

Code: Alles auswählen

"""Erstellung eines StackedWidgets mit GridLayout"""
        #Layout des TabsEinstellungen
        tablayout = QVBoxLayout(self.tabEinstellungen)
        
        #Erstellung eines Widgets, welches auf dem Tab liegt
        WidgetEinstellungen = QWidget()   
        #Erstellung eines GridLayouts und zuordnung zu WidgetEinstellungen
        self.ltabEinstellungen = QGridLayout(WidgetEinstellungen)
        #Erstellung eines StackedWidgets
        stackedEinstellungen = QStackedWidget()

        #Dem tablayout wird das StackedWidget zugeordnet
        tablayout.addWidget(stackedEinstellungen)
        
        #dem SteckedLayout wird das WidgetEinstellungen hinzugefügt
        stackedEinstellungen.addWidget(WidgetEinstellungen)
Man musste vorher erst noch ein Layout erstellen, welches man dem Tab zuordnet. Diesem Layout muss mann dan noch das Stacked Widget hinzufügen.
Funktioniert Prima, wenn auch überaus umständlich. Wäre nie alleine draufgekommen.
Antworten