当前位置: 首页 > news >正文

【PyQt学习篇 · ④】:QWidget - 尺寸操作

文章目录

  • QWidget简介
  • QWidget大小位置操作
    • 案例一
    • 案例二
  • QWidget尺寸限定操作
    • 案例
  • 内容边距
    • 案例

QWidget简介

在PyQt中,QWidget是一个基本的用户界面类,用于创建可见的窗口组件。QWidget可以包含多种类型的子组件,如QPushButton、QLabel、QLineEdit等。QWidget提供了许多方法来设置组件样式、布局、大小、位置等。

在PyQt中,使用QMainWindow、QDialog、QMessageBox等衍生自QWidget的类来创建不同类型的窗口。

QWidget大小位置操作

在PyQt中,QWidget提供了一些方法和属性来处理它的大小和位置。

下面是一些设置大小位置信息常用的方法和属性的介绍:

  1. move(x, y)方法:

    • 作用:将QWidget移动到指定的位置。
    • 参数:x(int)为新的x坐标,y(int)为新的y坐标。
  2. resize(width, height)方法:

    • 作用:改变QWidget的大小。
    • 参数:width(int)为新的宽度,height(int)为新的高度。
  3. setGeometry(x, y, width, height)方法:

    • 作用:设置QWidget的位置和大小。
    • 参数:x(int)和y(int)为新的坐标,width(int)和height(int)为新的宽度和高度。
  4. adjustSize()方法:

    • 作用:根据内容调整QWidget的大小。
    • 参数:无。
  5. setFixedSize(width, height)方法:

    • 作用:设置QWidget的固定大小。
    • 参数:width(int)为固定的宽度,height(int)为固定的高度。

下面是一些获取大小位置信息常用的方法和属性的介绍:

  1. x()y()方法:

    • 作用:获取QWidget的x和y坐标。
    • 返回值:分别返回QWidget的x和y坐标。
  2. pos()方法:

    • 作用:获取QWidget的位置。
    • 返回值:返回一个QPoint对象,包含了QWidget的x和y坐标。
  3. width()height()方法:

    • 作用:获取QWidget的宽度和高度。
    • 返回值:分别返回QWidget的宽度和高度。
  4. size()方法:

    • 作用:获取QWidget的大小。
    • 返回值:返回一个QSize对象,包含了QWidget的宽度和高度。
  5. geometry()方法:

    • 作用:获取QWidget的位置和大小信息。
    • 返回值:返回一个QRect对象,包含了x,y坐标和QWidget的宽度和高度信息。
  6. rect()属性:

    • 作用:获取QWidget的矩形区域。
    • 类型:QRect对象。
  7. frameSize()方法:

    • 作用:获取QWidget的边框大小,包括窗口装饰部分所占用的空间。
    • 返回值:返回一个QSize对象,包含了QWidget的边框的宽度和高度。
  8. frameGeometry()方法:

    • 作用:获取QWidget相对于窗口的位置和大小信息,包括窗口装饰部分所占用的空间。
    • 返回值:返回一个QRect对象,包含了x,y坐标和QWidget的宽度和高度信息。

通过这些方法和属性,你可以方便地获取和设置QWidget的位置和大小信息,对界面进行灵活的布局和调整。

在这里插入图片描述

案例一

自适应调整标签的大小以使用新的文本内容。

from PyQt5.QtWidgets import *
import sysdef add_PyQt5():next_text = label.text() + 'PyQt'label.setText(next_text)label.adjustSize()  # 自适应if __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.resize(200, 200)label = QLabel(window)label.setText('PyQt5')label.setStyleSheet('background-color: cyan;')btn = QPushButton(window)btn.setText("增加PyQt5")btn.move(50, 50)btn.clicked.connect(add_PyQt5)window.show()sys.exit(app.exec_())

运行结果:

在这里插入图片描述

案例二

在窗口内创建指定个数的子控件。

要求:按照九宫格的布局进行摆放,一行三列。

from PyQt5.QtWidgets import *
import sysclass Create_Widget(QWidget):def __init__(self, parent=None):super().__init__(parent)# 设置主窗口的名称和大小self.setWindowTitle('案例二')self.resize(300, 300)# 创建控件def createWidget(self, num, column_count):# 计算一个控件的宽度:主窗口的宽度 / 一行多少列widget_width = self.width() / column_count# 总共有多少行:编号 // 一行多少列 + 1row_count = (num-1) // column_count + 1widget_height = self.height() / row_countfor i in range(num):w = QWidget(self)w.resize(widget_width, widget_height)widget_x = i % column_count * widget_width      # 在x轴上移动的位置widget_y = i // column_count * widget_height    # 在y轴上移动的位置w.move(widget_x, widget_y)w.setStyleSheet("background-color: red; border: 1px solid yellow;")if __name__ == '__main__':app = QApplication(sys.argv)window = Create_Widget()window.createWidget(100, 5)window.show()sys.exit(app.exec_())

运行结果:

在这里插入图片描述

QWidget尺寸限定操作

在PyQt中,QWidget提供了一些方法来限制其尺寸的最小和最大值。

下面是设置尺寸大小方法的介绍:

  1. setMinimumWidth(width)setMinimumHeight(height)方法:

    • 作用:设置QWidget的最小宽度和最小高度为给定的值。
    • 参数:width和height为整数,分别表示最小宽度和最小高度。
  2. setMinimumSize(width, height)方法:

    • 作用:设置QWidget的最小尺寸为给定的宽度和高度。
    • 参数:width和height为整数,分别表示最小宽度和最小高度。
  3. setMaximumWidth(width)setMaximumHeight(height)方法:

    • 作用:设置QWidget的最大宽度和最大高度为给定的值。
    • 参数:width和height为整数,分别表示最大宽度和最大高度。
  4. setMaximumSize(width, height)方法:

    • 作用:设置QWidget的最大尺寸为给定的宽度和高度。
    • 参数:width和height为整数,分别表示最大宽度和最大高度。

下面是获取尺寸信息方法的介绍:

  1. minimumWidth()minimumHeight()方法:

    • 作用:获取QWidget的最小宽度和最小高度。
    • 返回值:整数,表示最小宽度和最小高度。
  2. minimumSize()方法:

    • 作用:获取QWidget的最小尺寸。
    • 返回值:QSize对象,包含最小宽度和最小高度。
  3. maximumWidth()maximumHeight()方法:

    • 作用:获取QWidget的最大宽度和最大高度。
    • 返回值:整数,表示最大宽度和最大高度。
  4. maximumSize()方法:

    • 作用:获取QWidget的最大尺寸。
    • 返回值:QSize对象,包含最大宽度和最大高度。

案例

创建一个窗口,设置最小尺寸和最大尺寸。

要求:最小为250, 250,最大为500, 500;测试通过resize是否可以改变。

from PyQt5.QtWidgets import *
import sysapp = QApplication(sys.argv)window = QWidget()
window.setWindowTitle("最小尺寸最大尺寸限定")window.setMinimumSize(250, 250)     # 设置窗口最小值
window.setMaximumSize(500, 500)     # 设置窗口最大值window.resize(1000, 1000)window.show()sys.exit(app.exec_())

将窗口结果进行比较:

在这里插入图片描述
运行以上结果,发现resize(1000, 1000)没有发挥作用,因为窗口已被限定最大为500, 500。

内容边距

在PyQt中,QWidget类提供了一些用于内容边距操作的方法。下面是这些方法的介绍:

  1. setContentsMargins(left, top, right, bottom)方法:

    • 作用:设置QWidget的内容边距(即内容区域与边界的距离)。
    • 参数:left、top、right、bottom为整数,分别表示内容区域与左边、上边、右边、下边的距离。
  2. getContentsMargins()方法:

    • 作用:获取QWidget的内容边距。
    • 返回值:一个包含四个整数的元组,分别表示内容区域与左边、上边、右边、下边的距离。
  3. contentsRect()方法:

    • 作用:获取QWidget的内容矩形区域。
    • 返回值:一个QRect对象,表示QWidget的内容矩形区域,即不包括边框和滚动条的区域。

案例

创建一个窗口,包含一个标签。

要求:标签内容为“我爱Python,我学PyQt”,标签大小为300, 300,并将内容放在标签的右下角。

from PyQt5.QtWidgets import *
import sysapp = QApplication(sys.argv)window = QWidget()
window.setWindowTitle("内容边距的设置")
window.resize(500, 500)label = QLabel(window)
label.setText("我爱Python,我学PyQt")
label.resize(300, 300)
label.setStyleSheet("background-color: cyan;")# 设置内容边距
label.setContentsMargins(100, 200, 0, 0)# 获取内容边距
print(label.getContentsMargins())# 获取内容区域展示的范围
print(label.contentsRect())window.show()
sys.exit(app.exec_())

运行结果:

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/210468.html

相关文章:

  • APC学习记录
  • 前端将图片储存table表格中,页面回显
  • [论文阅读]Ghost-free High Dynamic Range Imaging with Context-aware Transformer
  • react高阶成分(HOC)例子效果
  • 【24种设计模式】工厂模式(Factory Pattern)
  • 树——对称二叉树
  • 拉扎维模拟CMOS集成电路设计西交张鸿老师课程P10~13视频学习记录
  • 3.线性神经网络
  • python常用内置函数的介绍和使用
  • 2023辽宁省赛E
  • visual studio 启用C++11
  • 获取某个抖音用户的视频列表信息
  • 【C语言】strcpy()函数(字符串拷贝函数详解)
  • 机器学习之IV编码,分箱WOE编码
  • 区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第六套区块链系统部署与运维
  • 山西电力市场日前价格预测【2023-10-30】
  • win10虚拟机安装教程
  • 2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据
  • CSP-J 2023 T3 一元二次方程 解题报告
  • 中颖单片机SH367309全套量产PCM,专用动力电池保护板开发资料
  • Android数据对象序列化原理与应用
  • Linux cp命令:复制文件和目录
  • SpringBoot 接收不到 post 请求数据与接收 post 请求数据
  • vue3学习(十四)--- vue3中css新特性
  • Python爬虫基础之Requests详解
  • C++求根节点到叶子节点数字之和
  • C++搜索二叉树
  • 软件工程17-18期末试卷
  • 课题学习(九)----阅读《导向钻井工具姿态动态测量的自适应滤波方法》论文笔记
  • 阿里云服务器—ECS快速入门