1

pyqt5をいじり始めたばかりで、ウィジェットをQVBoxLayoutの一番上にプッシュし、QHBoxLayoutを残す方法を考えていました。現在 addStretch() を使用すると、ウィジェットが下/右にプッシュされます。絶対配置の使用は避けたいと思います。

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)

使用しself.tabColor.layout.setDirection(3)ました。水平レイアウトを上に配置しますが、順序が反転しているようです。基本的に「不明」が最初で、次に「制御」になります。それは大したことではありませんが、私が試すことができる他のオプションがあるかどうか疑問に思っていました

4

2 に答える 2

1

別の方法を試しているので、レイアウトの方向を設定することをお勧めします。

  1. ウィジェットを追加して挿入するのではなく、常に最初に追加してみてください

それ以外の:

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

試す:

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

反対方向に追加され、既にレイアウト内にあるウィジェットは、レイアウト QHBoxLayout または QVBoxLayout に従ってシフトされます。

于 2017-05-29T20:29:17.847 に答える