Python3.7 PYQT5基础布局嵌套

浅谈pyqt5布局管理

    • 绝对布局
    • 比较好的布局方式

布局管理是GUI编程中的一个重要方面。布局管理是一种如何在应用窗口上防止组件的一种方法。我们可以通过两种基础方式来管理布局。我们可以使用绝对定位和布局类。

绝对布局

绝对布局简单来讲就是直接指定控件的大小位置,当我们放大或缩小时,不会随变。

# -*- coding: utf-8 -*-
"""
Created on 2020 

@author: tanhao
"""
from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500, 200)
        self.setWindowTitle('绝对布局演示')
        self.setup_ui()

    def setup_ui(self):
        self.lab_zhushi = QTableView( self)
        self.lab_zhushi.move(0, 100)
        self.lab_zhushi.resize(500,100)

if __name__ == '__main__':
    App = QApplication(sys.argv)
    Win = Window()
    Win.show()
    sys.exit(App.exec_())

结果:
Python3.7 PYQT5基础布局嵌套_第1张图片
全屏后:
Python3.7 PYQT5基础布局嵌套_第2张图片

比较好的布局方式

使用其中的布局类互相嵌套形成。
PyQt5 有四种布局:

项目
水平 QHBoxLayout
竖直 QVBoxLayout
网格 QGridLayout
表单 QFormLayout
from PyQt5 import QtWidgets


class MyWindow(QtWidgets.QWidget):

    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyQt5好的布局示例')

        # 开始:
        alllayout = QtWidgets.QVBoxLayout()  # 全局布局QVBoxLayout

        FirstWidgets = QtWidgets.QWidget()# 局部布局(1)QHBoxLayout()
        Firstlayout = QtWidgets.QHBoxLayout()
        Firstlayout.addWidget(QtWidgets.QLabel('开始'))
        Firstlayout.addWidget(QtWidgets.QSplitter())#加入间距
        Firstlayout.addWidget(QtWidgets.QLabel('结束'))
        FirstWidgets.setLayout(Firstlayout)

        SeWidgets = QtWidgets.QWidget()  # 局部布局(2)QGridLayout()
        Selayout = QtWidgets.QGridLayout()
        Selayout.addWidget(QtWidgets.QTableView(),1,0)

        TEXT = QtWidgets.QTextBrowser()
        TEXT.append("一个消息")

        Selayout.addWidget(TEXT,1,1)
        SeWidgets.setLayout(Selayout)

        THWidgets = QtWidgets.QWidget()  # 局部布局(3)QHBoxLayout()
        THlayout = QtWidgets.QHBoxLayout()
        THlayout.addWidget(QtWidgets.QLabel('退出'))
        THlayout.addWidget(QtWidgets.QLabel('再见'))
        THWidgets.setLayout(THlayout)



        alllayout.addWidget(FirstWidgets)  # 3个部件加至全局布局
        alllayout.addWidget(SeWidgets)
        alllayout.addWidget(THWidgets)

        self.setLayout(alllayout)  # 窗体本尊设置全局布局


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())

Python3.7 PYQT5基础布局嵌套_第3张图片
这样布局,就算缩放也不会改变相对位置了。
Python3.7 PYQT5基础布局嵌套_第4张图片
修改第二个子布局网格布局参数

Selayout.addWidget(QtWidgets.QTableView(),1,0)
Selayout.addWidget(TEXT,2,0)

得到
Python3.7 PYQT5基础布局嵌套_第5张图片
至此,一般的简单界面均可由此模板创建完成。

你可能感兴趣的:(Python,pyqt5,python,pyqt)