首页 > 其他 > 详细

pyqt5学习之布局管理

时间:2020-03-13 21:01:33      阅读:71      评论:0      收藏:0      [点我收藏+]

使用步骤:1.创建一个布局管理器对象       

     2.直接把布局管理器对象设置给需要布局的父控件

      3.把需要布局的子控件添加到布局管理器当中

简单实例:

QBoxlayout:盒子布局

 

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

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

        # 1.创建一个布局管理器对象
        V_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(V_layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        V_layout.addWidget(label1)
        V_layout.addWidget(label2)
        V_layout.addWidget(label3)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

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

 

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

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

        # 1.创建一个布局管理器对象
        V_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(V_layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        V_layout.addWidget(label1)
        V_layout.addWidget(label2)
        V_layout.addWidget(label3)


        V_layout.setContentsMargins(20,30,40,50)  # setContentsMargins:调整子控件在父控件的外边距;参数:左,上,右,下



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
setContentsMargins
技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

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

        # 1.创建一个布局管理器对象
        V_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(V_layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        V_layout.addWidget(label1)
        V_layout.addWidget(label2)
        V_layout.addWidget(label3)


        V_layout.setSpacing(20)  # setSpacing:调整子控件相邻内边距



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
setSpacing
技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

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

        # 1.创建一个布局管理器对象
        H_layout = QHBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1)
        H_layout.addWidget(label2)
        H_layout.addWidget(label3)


        self.setLayoutDirection(Qt.RightToLeft)  # setLayoutDirection:调整子控布局方向



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
setLayoutDirection
技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        label1 = QLabel(标签1)
        label1.setStyleSheet(background-color: cyan;)
        label2 = QLabel(标签2)
        label2.setStyleSheet(background-color: yellow;)
        label3 = QLabel(标签3)
        label3.setStyleSheet(background-color: red;)
        label4 = QLabel(标签4)
        label4.setStyleSheet(background-color: blue;)

        # 1.创建一个布局管理器对象
        H_layout = QHBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)
        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1)
        H_layout.addWidget(label2)
        H_layout.addWidget(label3)

        H_layout.replaceWidget(label2,label4)  # replaceWidget:替换控件;被替换在前
        label2.hide()# 被替换的要隐藏,因为没有删除该控件
        self.setLayoutDirection(Qt.RightToLeft)  # setLayoutDirection:调整子控布局方向



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
replaceWidget

布局嵌套

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        label1 = QLabel(标签1)
        label1.setStyleSheet(background-color: cyan;)
        label2 = QLabel(标签2)
        label2.setStyleSheet(background-color: yellow;)
        label3 = QLabel(标签3)
        label3.setStyleSheet(background-color: red;)
        label4 = QLabel(标签4)
        label4.setStyleSheet(background-color: blue;)

        # 1.创建一个布局管理器对象
        H_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)



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

        V_layout = QBoxLayout(QBoxLayout.LeftToRight)
        V_layout.addWidget(label5)
        V_layout.addWidget(label6)
        V_layout.addWidget(label7)

        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1)
        H_layout.addLayout(V_layout)  # 讲需要嵌套的子控件放在父嵌套中
        H_layout.addWidget(label2)
        H_layout.addWidget(label3)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
addLayout
技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        label1 = QLabel(标签1)
        label1.setStyleSheet(background-color: cyan;)
        label2 = QLabel(标签2)
        label2.setStyleSheet(background-color: yellow;)
        label3 = QLabel(标签3)
        label3.setStyleSheet(background-color: red;)
        label4 = QLabel(标签4)
        label4.setStyleSheet(background-color: blue;)

        # 1.创建一个布局管理器对象
        H_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)



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

        V_layout = QBoxLayout(QBoxLayout.LeftToRight)
        V_layout.addWidget(label5)
        V_layout.addWidget(label6)
        V_layout.addWidget(label7)

        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1)
        H_layout.insertLayout(2,V_layout)  # 讲需要嵌套的子控件插入父嵌套2后面
        H_layout.addWidget(label2)
        H_layout.addWidget(label3)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
insertLayout

给定控件之间增加空白

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        label1 = QLabel(标签1)
        label1.setStyleSheet(background-color: cyan;)
        label2 = QLabel(标签2)
        label2.setStyleSheet(background-color: yellow;)
        label3 = QLabel(标签3)
        label3.setStyleSheet(background-color: red;)
        label4 = QLabel(标签4)
        label4.setStyleSheet(background-color: blue;)

        # 1.创建一个布局管理器对象
        H_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)



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

        V_layout = QBoxLayout(QBoxLayout.LeftToRight)
        V_layout.addWidget(label5)
        V_layout.addWidget(label6)
        V_layout.addWidget(label7)

        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1)
        H_layout.addSpacing(100)  # addSpacing:给需要的控件之间增加空白
        H_layout.addWidget(label2)
        H_layout.addWidget(label3)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
addSpacing

伸缩因子

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle(布局管理器使用)
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        label1 = QLabel(标签1)
        label1.setStyleSheet(background-color: cyan;)
        label2 = QLabel(标签2)
        label2.setStyleSheet(background-color: yellow;)
        label3 = QLabel(标签3)
        label3.setStyleSheet(background-color: red;)
        label4 = QLabel(标签4)
        label4.setStyleSheet(background-color: blue;)

        # 1.创建一个布局管理器对象
        H_layout = QVBoxLayout()  # 垂直布局
        # H_layout = QHBoxLayout()  # 水平布局
        # 2.直接把布局管理器对象设置给需要布局的父控件
        self.setLayout(H_layout)



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

        V_layout = QBoxLayout(QBoxLayout.LeftToRight)
        V_layout.addWidget(label5)
        V_layout.addWidget(label6)
        V_layout.addWidget(label7)

        # 3.把需要布局的子控件添加到布局管理器当中
        H_layout.addWidget(label1,1)# H_layout.addWidget(label1,1)第二个参数即为伸缩因子
        H_layout.addStretch(1)  # addStretch:伸缩因子
        H_layout.addWidget(label2,1)
        H_layout.addWidget(label3,1)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
addStretch

QformLayout:表单布局

添加行

 

技术分享图片
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle("QFormLayout的学习")
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        name_label = QLabel("姓名(&n):")
        age_label = QLabel("年龄(&g):")

        name_le = QLineEdit()
        age_sb = QSpinBox()

        name_label.setBuddy(name_le)
        age_label.setBuddy(age_sb)

        sex_label = QLabel("性别")
        male_rb = QRadioButton("")
        female_rb = QRadioButton("")
        h_layout = QHBoxLayout()
        h_layout.addWidget(male_rb)
        h_layout.addWidget(female_rb)

        submit_btn = QPushButton("提交")

        # 1. 创建布局管理器
        layout = QFormLayout()

        # 2. 把布局管理器赋值给需要布局的父控件
        self.setLayout(layout)

        # 3. 把需要布局的子控件交给布局管理器进行布局
        # layout.addRow(name_label, name_le)
        layout.addRow("姓名(&n)", name_le)  # addRow添加行
        layout.addRow(sex_label, h_layout)
        # layout.addRow("性别:", h_layout)
        layout.addRow(age_label, age_sb)
        # layout.addRow("年龄(&g)", age_sb)
        layout.addRow(submit_btn)





if __name__ == "__main__":

    app = QApplication(sys.argv)

    window = Window()

    window.show()
    sys.exit(app.exec_())
addRow

 

pyqt5学习之布局管理

原文:https://www.cnblogs.com/mosewumo/p/12488779.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!