2017-05-24 1 views
0

Commençons à jouer avec pyqt5 et je me demandais comment pousser les widgets vers le haut pour QVBoxLayout et à gauche pour QHBoxLayout. Actuellement avec addStretch() il pousse les widgets vers le bas/droite. Je voudrais éviter d'utiliser le positionnement absolu.Comment faire pour pousser les widgets en haut à gauche au lieu de bas à droite

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) 

J'ai utilisé self.tabColor.layout.setDirection(3). Il place la disposition horizontale sur le dessus mais il semble renverser l'ordre. Fondamentalement «inconnu» sera d'abord puis «conrol». Son pas une grosse affaire, mais se demande s'il y a d'autres options que je pourrais essayer

Répondre

0

Changer l'ordre des addWidget/extensible appels (par exemple ajouter le tronçon après le widget)

0

La première approche que je vous recommande vous aussi à définir la direction de votre mise en page, puisque vous essayez d'avoir une autre façon:

  1. essayez d'ajouter toujours au début, au lieu d'ajouter un widget essayer de l'insérer

au lieu de:

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

essayer:

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

et il sera ajouté dans le sens inverse, les widgets qui sont déjà à l'intérieur de votre mise en page seront déplacés en fonction de votre mise en page QHBoxLayout ou QVBoxLayout .