PyQt5 – rect()方法

  • Post category:Python

PyQt5是Python语言的GUI编程工具箱,在编写GUI程序时,使用rect()方法能够获取或设置控件的矩形框信息,本文将详细解读该方法的使用攻略。

PyQt5中的rect()方法

1. rect()方法定义

PyQt5的rect()方法是QWidget类中的一个函数,它可以获取或设置一个控件的矩形框信息。函数的定义如下:

rect(self) -> QRect

2. rect()方法参数

rect()方法不需要参数,只需在类中直接调用即可。

3. rect()方法返回值

rect()方法返回一个QRect类的对象,该对象包含了控件矩形框的左上角位置(x,y)、宽(width)和高(height)四个值的信息。可以通过该对象的方法,如x(), y(), width(), height()等分别获取这四个值。

4. rect()方法使用示例

示例1:获取控件矩形框信息

假设我们要获取一个Qt Widget控件的矩形框信息,并将其四个矩形框参数(左上角坐标、宽和高)打印出来,可以使用如下代码:

from PyQt5.QtWidgets import QWidget, QApplication, QMainWindow, QLabel
from PyQt5.QtCore import QRect, Qt
import sys, random

class Example(QWidget):
    def __init__(self):
        super().__init__()

        # 设置控件的位置
        self.setGeometry(200, 200, 300, 200)
        self.setWindowTitle('PyQt5 - rect()方法')

        # 定义一段文本标签
        self.text_label = QLabel(self)
        self.text_label.setText('Hello World!')

    def paintEvent(self, event):
        # 获取标签控件的矩形框信息
        rect = self.text_label.rect()

        # 打印矩形框信息
        print(f"x={rect.x()}, y={rect.y()}, 宽={rect.width()}, 高={rect.height()}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

在该示例中,我们定义了一个 Example 类继承于 QWidget,在其构造函数中,我们设置了控件的位置和大小,并声明了一个文本标签控件 text_label

由于有时我们需要重写控件的 paintEvent 事件,因此在 Example 类中定义了 paintEvent 事件,该事件会在窗口绘制的同时被触发。

在上述事件中,通过如下代码获取 text_label 控件的矩形框信息:

rect = self.text_label.rect()

然后,我们通过如下代码打印矩形框信息:

print(f"x={rect.x()}, y={rect.y()}, 宽={rect.width()}, 高={rect.height()}")

程序运行后,在控制台上可以看到类似如下的信息:

x=0, y=0, 宽=75, 高=16

示例2:设置控件矩形框信息

假设我们要创建一个按钮控件,然后将其位置随机改变,可以使用如下代码:

from PyQt5.QtWidgets import QWidget, QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QRect, Qt
import sys, random

class Example(QWidget):
    def __init__(self):
        super().__init__()

        # 设置控件的位置
        self.setGeometry(200, 200, 300, 200)
        self.setWindowTitle('PyQt5 - rect()方法')

        # 创建一个按钮控件
        self.button = QPushButton('Click me!', self)
        self.button.setToolTip('Tip: Click to show message')
        self.button.clicked.connect(self.show_message)

    def show_message(self):
        print('Hello World!')

    def paintEvent(self, event):
        # 随机设置控件位置
        rect = self.button.rect()
        self.button.setGeometry(
            random.randint(0, self.width() - rect.width()),
            random.randint(0, self.height() - rect.height()),
            rect.width(),
            rect.height()
        )

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

在该示例中,我们定义了一个按钮控件,并使用 QPushButton 类初始化它。在构造函数中,我们调用 setGeometry() 函数设置控件的位置和大小,然后声明了一个信号槽,连接了按钮的 clicked 信号和自定义的槽函数 show_message()

在按钮被点击时,该信号会触发,调用 show_message() 函数。在绘制事件中,我们通过如下代码随机设置了按钮的位置:

rect = self.button.rect()
self.button.setGeometry(
    random.randint(0, self.width() - rect.width()),
    random.randint(0, self.height() - rect.height()),
    rect.width(),
    rect.height()
)

其中,我们首先获取了按钮的矩形框信息:

rect = self.button.rect()

然后在 setGeometry() 函数中设置了一个随机位置,使按钮出现在窗口中随机位置。

运行程序后,每次单击按钮,按钮的位置都会发生随机改变。

以上就是PyQt5中rect()方法的使用攻略,希望可以帮助到你。