返回顶部

布局管理之 QLayout

QLayout 描述:

布局管理器的最基的基类:

它是一个抽象类,我们这里直接用它的子类QBoxLayout 来说它!

QLayout 功能作用:

构造函数:

 

QLayout 中布局管理器的嵌套(添加子布局):

from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLayout 的学习")
        self.resize(400,400)
        self.set_ui()


    def set_ui(self):
        label1= QLabel("标签1")
        label1.setStyleSheet("background-color:red;")
        label2= QLabel("标签2")
        label2.setStyleSheet("background-color:green;")
        label3= QLabel("标签3")
        label3.setStyleSheet("background-color:yellow;")

        #
        boxLayout = QBoxLayout(QBoxLayout.BottomToTop)

        boxLayout.addWidget(label1)
        boxLayout.addWidget(label2)
        boxLayout.addWidget(label3)

        boxLayout.setSpacing(60)
        boxLayout.setContentsMargins(0,0,0,0)

        #替换子控件
        label4 = QLabel("标签4")
        label4.setStyleSheet("background-color:orange;")
        boxLayout.replaceWidget(label2,label4)
        #替换后一般要隐藏要替换的
        label2.hide()
        #删除 label2  的特殊方式,就是让它的父控件为None
        label2.setParent(None)  #这也释放了label2 ,如果要验证它,可以通过信号


        #添加子布局 (布局的嵌套)
        label5= QLabel("标签5")
        label5.setStyleSheet("background-color:pink;")
        label6= QLabel("标签6")
        label6.setStyleSheet("background-color:blue;")
        label7= QLabel("标签7")
        label7.setStyleSheet("background-color:cyan;")

        h_layout = QBoxLayout(QBoxLayout.LeftToRight) #水平布局

        h_layout.addWidget(label5)
        h_layout.addWidget(label6)
        h_layout.addWidget(label7)

        boxLayout.addLayout(h_layout)
        #添加子布局 (布局的嵌套)

        self.setLayout(boxLayout)


if __name__ == '__main__':
    app =QApplication(sys.argv)

    window = Window()
    window.show()

    sys.exit(app.exec_())
View Code

 

QLayout 设置能用性:

from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLayout 的学习")
        self.resize(400,400)
        self.set_ui()


    def set_ui(self):
        label1= QLabel("标签1")
        label1.setStyleSheet("background-color:red;")
        label2= QLabel("标签2")
        label2.setStyleSheet("background-color:green;")
        label3= QLabel("标签3")
        label3.setStyleSheet("background-color:yellow;")

        #
        boxLayout = QBoxLayout(QBoxLayout.BottomToTop)

        boxLayout.addWidget(label1)
        boxLayout.addWidget(label2)
        boxLayout.addWidget(label3)

        boxLayout.setSpacing(60)
        boxLayout.setContentsMargins(0,0,0,0)

        #设置能用性
        boxLayout.setEnabled(False)

        self.setLayout(boxLayout)


if __name__ == '__main__':
    app =QApplication(sys.argv)

    window = Window()
    window.show()

    sys.exit(app.exec_())
View Code

总结:

以上就是QLayout 提供的功能。

下面看QBoxLayout 中提供了哪些功能:https://www.cnblogs.com/zach0812/p/11400042.html

 

posted @ 2019-08-23 15:20  Zcb0812  阅读(596)  评论(0编辑  收藏  举报