Python PyQt5 - Gibt es einem Grid Layout einen Paltzhalter wie z.b. das addStretch() aus dem QBoxLayout?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Ich verwende Qt in Verbindung mit C++, aber ich vermute, dass das übertragbar ist.

Du kannst bei einem Grid Layout den rowStretch setzen. Die Breite von irgendwelchen Labels kannst du auch direkt setzen (setFixedWidth()).

Woher ich das weiß:Hobby – Hobby seit meiner Jugend
DNSxxx 
Fragesteller
 12.04.2021, 19:40

Hi. Danke für die Antwort. Bin leider im Programmieren Allgemein noch nicht recht gut. Hätte das mit dem rowStretch versucht, aber bekomms zumindest auf Anhieb nicht hin.

# Widgets für Grid definieren
lbl1 = QLabel('Obere Toleranz der Zufallszahlen defninieren: ')
lineEdit1 = QLineEdit()
lbl2 = QLabel('Untere Toleranz der Zufallszahlen defninieren:')
lineEdit2 = QLineEdit()
lbl3 = QLabel('Menge der gewünschten Zufallszahlen:')
lineEdit3 = QLineEdit()



# Widgets für Grid hinzufügen
layout_grid.addWidget(lbl1,1,1)
layout_grid.addWidget(lineEdit1,1,2)

layout_grid.setRowStretch(2,1)   # Funktioniert so nicht

layout_grid.addWidget(lbl2,3,1)
layout_grid.addWidget(lineEdit2,3,2)

Hätte so und anders probiert wie ich es in der 3. letzten Zeile geschrieben hab.

Ich weiß C++ ist anders als Python, aber ein C Programmierer hat mir schon mal recht schnell helfen können.

Hast du eine Idee wie ich das rowStretch richtig anwenden könnte?

Aber auch wenn nicht. Vielen Dank für deine Antwort. Jetzt hab ich zumindest mal einen Anhaltspunkt nach was ich suchen muss.

0
ShimaG  12.04.2021, 19:55
@DNSxxx

Doch, das klappt schon - mach doch mal das Window größer!

Im Code oben benutzt du übrigens lbl3 und lineEdit3 nicht.

0
ShimaG  12.04.2021, 20:02
@ShimaG

Ach ja: "Stretch" macht eine dynamische Länge (Gummilänge); wenn du eine konstante Höhe haben willst, musst du bei einem Grid Layout rowMinimumHeight setzen.

0
DNSxxx 
Fragesteller
 12.04.2021, 20:08
@ShimaG

Danke. Jetzt hab ich gesehen das es funktionieren würde wenn andere addStretch nicht rein mache. Das Fenster ist noch in der Entstehung und ich hab natürlich dummerweise nicht den ganzen Code geschrieben, weil ich die Erfahrung gemacht hab das wenn ich zuviel code schreibe mir niemand mehr Antwortet. Im ganzen Code bette ich das Grid Layout in ein Vertikales Layout ein bei dem noch Stretches drin sind. Wenn ich die rausnehme funktioniert das im GridLayout und wenn ich die drin lasse nicht mehr. Vielen Dank für deine Hilfe.

So funktioniert es leider nicht, weil ein addStretch unten dran ist:

# Layout's definieren
layout_zeile_1 = QHBoxLayout()
layout_grid = QGridLayout()  # Kommt in Zeile 1 rein

layout_zeile_2 = QHBoxLayout()



vertikales_Layout.addLayout(layout_zeile_1)  # Zum Hauptlayout ein Horizontales Layout hinzufügen
layout_zeile_1.addLayout(layout_grid)  # Dem Zeile 1 Layout das Grid Layout hinzufügen


vertikales_Layout.addStretch(1)  # Unter dem Grid Layout einen Abstand einfügen

vertikales_Layout.addLayout(layout_zeile_2)

vertikales_Layout.addStretch(1)






# Widgets für Grid definieren
lbl1 = QLabel('Obere Toleranz der Zufallszahlen defninieren: ')
lineEdit1 = QLineEdit()
lbl2 = QLabel('Untere Toleranz der Zufallszahlen defninieren:')
lineEdit2 = QLineEdit()
lbl3 = QLabel('Menge der gewünschten Zufallszahlen:')
lineEdit3 = QLineEdit()



# Widgets für Grid hinzufügen
layout_grid.addWidget(lbl1,1,1)
layout_grid.addWidget(lineEdit1,1,2)
layout_grid.addWidget(lbl2,2,1)
layout_grid.addWidget(lineEdit2,2,2)
layout_grid.setRowStretch(3,1)
layout_grid.addWidget(lbl3,4,1)
layout_grid.addWidget(lineEdit3,4,2)
0