2017-05-24 5 views
0

Gerade begann mit pyqt5 Unordnung und fragte mich, wie man die Widgets nach oben für QVBoxLayout und links für QHBoxLayout schieben. Derzeit werden die Widgets mit addStretch() nach unten/rechts verschoben. Ich möchte vermeiden, absolute Positionierung zu verwenden.Wie Widgets nach oben links statt unten rechts schieben

self.tabColor.layout = QVBoxLayout(self) 
self.tabColor.layout.addStretch()  

## FOR CONTROL 
lbl_control = QLabel(self) 
lbl_control.setText("control") 
le_control = QLineEdit(self) 

hbox_control = QHBoxLayout() 
hbox_control.addStretch(1) 
hbox_control.addWidget(lbl_control) 
hbox_control.addWidget(le_control) 

## FOR UNKNOWN 
lbl_unknown = QLabel(self) 
lbl_unknown.setText("unknown") 
le_unknown = QLineEdit(self) 

hbox_unknown = QHBoxLayout() 
hbox_unknown.addStretch(1) 
hbox_unknown.addWidget(lbl_unknown) 
hbox_unknown.addWidget(le_unknown) 


self.tabColor.layout.addLayout(hbox_control) 
self.tabColor.layout.addLayout(hbox_unknown) 
self.tabColor.setLayout(self.tabColor.layout) 

Ich verwendete self.tabColor.layout.setDirection(3). Es platziert das horizontale Layout oben, aber es scheint die Reihenfolge umzukehren. Grundsätzlich wird "unbekannt" zuerst "control" sein. Es ist nicht eine große Sache, aber frage mich, ob es andere Möglichkeiten gibt i

Antwort

0

Ändern der Reihenfolge der addWidget/Stretch-Anrufe versuchen könnte (dh die Strecke hinzufügen nach das Widget)

0

Der erste Ansatz, den ich empfehlen würde Sie würde auch die Richtung des Layouts eingestellt werden, da Sie einen anderen Weg zu haben versuchen:

  1. versuchen immer am Anfang hinzufügen, anstatt Widget hinzuzufügen versuchen, es
Einfügen

statt:

self.layout.addWidget(self.lbl_1) 
self.layout.addWidget(self.lbl_2) 
self.layout.addWidget(self.lbl_3) 

Versuch:

self.layout.insertWidget(0,self.lbl_1) 
self.layout.insertWidget(0,self.lbl_2) 
self.layout.insertWidget(0,self.lbl_3) 

und es wird in der entgegengesetzten Richtung hinzugefügt werden, die Widgets, die bereits in Ihrem Layout sind entsprechend Ihr Layout QHBoxLayout verschoben werden, oder QVBoxLayout .

Verwandte Themen