zoukankan      html  css  js  c++  java
  • pyqt5学习之布局管理

    使用步骤: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
  • 相关阅读:
    操作技巧——电脑远程控制
    软件安装——internal error2503/2502
    系统常识——虚拟内存地址
    操作技巧——保障无线上网的技巧
    操作技巧——输入法转换问题
    软件安装——彻底卸载MySQL
    Java——this
    python百度贴吧爬虫
    糗事百科python爬虫
    python请求带cookie
  • 原文地址:https://www.cnblogs.com/mosewumo/p/12488779.html
Copyright © 2011-2022 走看看