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

news2024/11/26 4:49:08

文章目录

  • 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 sys


def 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 sys

class 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

        # 总共有多少行:编号 // 一行多少列 + 1
        row_count = (num-1) // column_count + 1
        widget_height = self.height() / row_count

        for 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 sys

app = 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 sys

app = 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.coloradmin.cn/o/1147022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab 中的基本绘图指令与字符串操作指令

字符串指令 创建字符串 使用单引号将字符序列括起来创建字符串使用单引号创建的字符串是一个字符数组,每个字符都被视为一个独立的元素 可以通过索引访问每个字符使用双引号创建的字符串是一个字符串数组,整个字符串被视为一个元素 无法通过索引访问单个…

Linux shell编程学习笔记17:for循环语句

Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算,同样也需要进行根据条件进行流程控制,提供了if、for、while、until等语句。 之前我们探讨了if语句,现在我们来探讨for循环语句。 Li…

海外问卷调查是怎么做的?全方位介绍!

橙河这样说,相信大家应该不难理解。 国外问卷调查目前主要有三种形式:口子查、站点查和渠道查。橙河自己做的是渠道查。 站点查是最早的问卷形式,意思是我们需要登录到问卷网站上,就可以做问卷了。但想要在网站上做问卷&#xf…

YOLO轻量化改进 , 边缘GPU友好的YOLO改进算法!

在本文中,作者根据现有先进方法中各种特征尺度之间缺少的组合连接的问题,提出了一种新的边缘GPU友好模块,用于多尺度特征交互。此外,作者提出了一种新的迁移学习backbone采用的灵感是来自不同任务的转换信息流的变化,旨…

《Attention Is All You Need》阅读笔记

论文标题 《Attention Is All You Need》 XXX Is All You Need 已经成一个梗了,现在出现了很多叫 XXX Is All You Need 的文章,简直标题党啊,也不写方法,也不写结果,有点理解老师扣论文题目了。 作者 这个作者栏太…

Yolo-Z:改进的YOLOv5用于小目标检测

目录 一、前言 二、背景 三、新思路 四、实验分析 论文地址:2112.11798.pdf (arxiv.org) 一、前言 随着自动驾驶汽车和自动驾驶赛车越来越受欢迎,对更快、更准确的检测器的需求也在增加。 虽然我们的肉眼几乎可以立即提取上下文信息,即…

Arhas 常用命令

watch 函数执行数据观测: location 会有三种值 AtEnter,AtExit,AtExceptionExit。 对应函数入口,函数正常 return,函数抛出异常。 result 表示观察表达式的值: {params,returnObj,throwExp} eg: 查看是某个方法的参…

探索Apache HttpClient超时时间如何设定?

目录 一、Apache HttpClient模拟POST请求,调用第三方接口1、发起POST请求:2、模拟服务端3、通过postman测试一下4、Apache HttpClient 二、HTTP超时时间1、众所周知,HTTP使用的是TCP/IP 协议。2、TCP/IP超时时间设置3、HTTP连接超时时间如何设…

笔记Kubernetes核心技术-之Controller

2、Controller 2.1、概述 在集群上管理和运行容器的对象,控制器(也称为:工作负载),Controller实际存在的,Pod是抽象的; 2.2、Pod和Controller关系 Pod是通过Controller实现应用运维,比如:弹…

前馈神经网络处理二分类任务

此文建议看完基础篇再来,废话不多说,进入正题 目录 1.神经元 1.1 活性值 1.2 激活函数 1.2.1 Sigmoid函数 1.2.2 Relu函数 2.基于前馈神经网络的二分类任务 2.1 数据集的构建 2.2 模型的构建 2.2.1 线性层算子 2.2.2 Logistic算子 2.2.3 层的串行组合…

FL Studio 21.2.0.3842中文破解版发布啦,支持 Cloud 在线采样库和 AI 音乐制作功能

好消息!FL Studio 21.2 在 10 月 26 日正式发布啦,它新增了 FL Cloud 在线采样库和 AI 音乐制作功能,还提供音乐分发到 Spotify、Apple Music 等主要音乐平台的服务。此外,还有新的音频分离功能、自定义波形颜色和新的合成器 Kepl…

改进YOLOv3!IA-YOLO:恶劣天气下的目标检测

恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务,要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架,可以对每张图像进行自适应增强,以提高检测…

Windows一键添加命名后缀(文件)

温馨提示:使用前建议先进行测试和原文件备份,避免引起不必要的损失。 (一)需求描述 之前老板让我给大量文件添加命名前缀,如今为了防患于未然,我决定把添加命名后缀的功能也实现一下,虽然这与添…

EASYX键盘交互

eg1:使用键盘的上下左右按钮控制小球的上下左右移动 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #include <conio.h> #define PI 3.14int main() {// 键盘交互initgraph(800, 600);setorigin(400, 300);set…

Linux网卡

网卡 网卡&#xff08;Network Interface Card&#xff0c;NIC&#xff09;是一种计算机硬件设备&#xff0c;也称为网络适配器或网络接口控制器。一个网卡就是一个接口 网卡组成和工作原理参考https://blog.csdn.net/tao546377318/article/details/51602298 每个网卡都拥有唯…

Mac删除照片快捷键ctrl加什么 Mac电脑如何批量删除照片

Mac电脑是很多人喜欢使用的电脑&#xff0c;它有着优美的设计、高效的性能和丰富的功能。如果你的Mac电脑上存储了很多不需要的照片&#xff0c;那么你可能会想要删除它们&#xff0c;以节省空间和提高速度。那么&#xff0c;Mac删除照片快捷键ctrl加什么呢&#xff1f;Mac电脑…

双目视觉计算三维坐标

一、原理 双目视觉的基本原理&#xff0c;以及公式推导&#xff0c;我参考的b站上的视频&#xff0c;链接如下&#xff1a; 2-线性相机模型-Linear Camera Model-Camera Calibration_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Q34y1n7ot/?p2&spm_id_from333.…

链表加法与节点交换:数据结构的基础技能

目录 两两交换链表中的节点单链表加一链表加法使用栈实现使用链表反转实现 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点…

13年测试老鸟,性能压测-死锁定位分析/内存溢出实例(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 死锁问题定位与分…

0029Java程序设计-家政服务平台管理系统

文章目录 摘要目录系统设计开发环境 摘要 本文首先研究并介绍国内外目前的背景和现状&#xff0c;在此基础上给出论文的主要研究内容&#xff0c;其次&#xff0c;对家政服务平台管理系统的需求进行了分析。再次&#xff0c;对家政服务平台管理系统进行了总体设计&#xff0c;…