将QHboxLayout的每个小部件与Pyqt中的顶部对齐
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将QHboxLayout的每个小部件与Pyqt中的顶部对齐相关的知识,希望对你有一定的参考价值。
我正在尝试将QHBoxlayout中的每个小部件与顶部对齐,但我得到的是每个小部件似乎都居中。我认为这是由于有不同的尺寸。
例如:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class SurfViewer(QMainWindow):
def __init__(self, parent=None):
super(SurfViewer, self).__init__()
self.parent = parent
self.setFixedWidth(300)
self.setFixedHeight(100)
self.wid = QWidget()
self.setCentralWidget(self.wid)
self.groups = QHBoxLayout()
l_a1 = QLabel('A')
a = QVBoxLayout()
a.addWidget(l_a1)
self.groups.addLayout(a)
l_a2 = QLabel('A')
l_b2 = QLabel('B')
a_b = QVBoxLayout()
a_b.addWidget(l_a2)
a_b.addWidget(l_b2)
self.groups.addLayout(a_b)
l_a3 = QLabel('A')
l_b3 = QLabel('B')
l_c3 = QLabel('C')
a_b_c = QVBoxLayout()
a_b_c.addWidget(l_a3)
a_b_c.addWidget(l_b3)
a_b_c.addWidget(l_c3)
self.groups.addLayout(a_b_c)
self.groups.setAlignment(Qt.AlignTop)
self.wid.setLayout(self.groups)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = SurfViewer(app)
ex.setWindowTitle('window')
ex.show()
sys.exit(app.exec_( ))
我明白了:
我想要的是:
答案
您必须将对齐应用于每个布局:
class SurfViewer(QMainWindow):
def __init__(self, parent=None):
super(SurfViewer, self).__init__(parent=parent)
self.setFixedSize(300, 100)
self.wid = QWidget()
self.setCentralWidget(self.wid)
self.groups = QHBoxLayout(self.wid)
l_a1 = QLabel('A')
a = QVBoxLayout()
a.addWidget(l_a1)
l_a2 = QLabel('A')
l_b2 = QLabel('B')
a_b = QVBoxLayout()
a_b.addWidget(l_a2)
a_b.addWidget(l_b2)
l_a3 = QLabel('A')
l_b3 = QLabel('B')
l_c3 = QLabel('C')
a_b_c = QVBoxLayout()
a_b_c.addWidget(l_a3)
a_b_c.addWidget(l_b3)
a_b_c.addWidget(l_c3)
a.setAlignment(Qt.AlignTop)
a_b.setAlignment(Qt.AlignTop)
a_b_c.setAlignment(Qt.AlignTop)
self.groups.addLayout(a)
self.groups.addLayout(a_b)
self.groups.addLayout(a_b_c)
self.groups.setAlignment(Qt.AlignTop)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = SurfViewer()
ex.setWindowTitle('window')
ex.show()
sys.exit(app.exec_( ))
以上是关于将QHboxLayout的每个小部件与Pyqt中的顶部对齐的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 无法访问动态创建的 QHBoxLayout 小部件