pyqt5 qwidget有父类窗口如何设置模态_实战PyQt5: 017-布局管理之QHBoxLayout

9da959f6d4a1a00cbae2d071a6c8fbbc.png

PyQT布局管理简介

在前面的程序中,当我们需要在窗口的某个位置放置一个布局时,总是在创建部件之后,调用QWidget中的相关方法,如move(),resize(),setGeometry()来指定部件的位置和大小。用这种方式来对窗口中的部件进行部件,存在很多缺陷,比如:

1. 当对窗口中的部件进行增减时,需要手工调整其它部件的位置和大小,这种方式不仅效率低下而且容易出错;

2. 当一个窗口中的部件较多时,计算每个部件在窗口中的坐标和大小是一个繁杂的任务,且不容易达到理想的外观布局。

3. 当主窗口的大小做调整时,窗口中的部件不随主窗口的调整而调整,这可能导致窗口中的一些部件不可见或者窗口中的所有部件聚集在主窗口的某一部分,导致整个窗口部件的位置不协调等。

因此,我们需要有布局管理的相关类来实现自动布局。在PyQt中,可以使用QLayout的四个子类(这四个子类分别是QHBoxLayout,QVBoxLayout, QFrameLayout和QGridLayout)来实现自动布局。

QLayout常用方法:

  • addLayout(): 在布局中添加一个布局,即布局可以嵌套;
  • addWidget(): 在布局中添加一个控件;
  • addSpacing(): 添加指定像素的空白控件;
  • addStretch(): 添加伸缩控制,类似弹簧,当窗口变化时,把部件推向某方向;
  • setSpacing(): 设置布局内部控件的间距;
  • setContentsMargins(): 设置布局边沿的空白间距;
  • removeWidget(): 删除指定的部件;
  • removeItem(): 删除指定的QLayoutItemm。

QHBoxLayout简介

QHBoxLayout继承自QBoxLayout,QBoxLayout可以在水平或者垂直方向上排列各种部件,QBoxLayout窗口布局如下图所示:

14177906ed81df18ee08d741da451662.png

QBoxLayout布局示意图

QHBoxLayout控制为水平布局管理,在水平方向上控制部件排列。其布局如下图所示:

00f58cd45f67e699937b41ae756e246f.png

QHBoxLayout布局示意图

QHBoxLayout类继承关系:

25436dbcef4e531b1328b06cbd3356e0.png

测试QHBoxLayout

创建文件qhboxlayout.py, 创建一个水平布局,添加四个按钮,代码如下:

import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout class DemoHBoxLayout(QWidget):    def __init__(self, parent=None):        super(DemoHBoxLayout, self).__init__(parent)                # 设置窗口标题        self.setWindowTitle('实战PyQt5: QHBoxLayout Demo!')              # 设置窗口大小        self.resize(400, 120)         #创建一个水平布局管理器        hbl = QHBoxLayout(self)        hbl.addWidget(QPushButton('春', self))        hbl.addWidget(QPushButton('夏', self))        hbl.addWidget(QPushButton('秋', self))        hbl.addWidget(QPushButton('冬', self))                self.setLayout(hbl)        if __name__ == '__main__':    app = QApplication(sys.argv)    window = DemoHBoxLayout()    window.show()    sys.exit(app.exec())

运行结果如下图所示:

1db12616262bb4cef549bc0838bb1880.gif

测试QHBoxLayout

本文知识点

  • PyQt布局管理基本概念;
  • QPlayout中添加布局和部件;
  • 添加布局后,部件的的空间位置和大小能随着窗口的调整而调整;
  • QHBoxLayout的用法。

喜欢本文内容就收藏,点赞,评论,关注和转发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值