📌  相关文章
📜  PyQt5 – 如何更改 MainWindow 的边框样式?(1)

📅  最后修改于: 2023-12-03 15:18:50.148000             🧑  作者: Mango

PyQt5 – 如何更改 MainWindow 的边框样式?

PyQt5是一个广泛使用的Python GUI框架,它允许开发者创建高效和美观的桌面应用程序。其中,MainWindow是一个常见的窗口控件。这篇文章将会介绍如何在PyQt5中更改MainWindow的边框样式。

步骤1:引入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
步骤2:继承QMainWindow类并设置边框
class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint)

需要注意的是,以上代码中的Qt.FramelessWindowHint参数会禁用窗口的默认边框。如果需要自定义边框,需要进一步设置窗口的样式。

步骤3:设置MainWindow的样式
    def paintEvent(self, event):
        self._painter = QPainter(self)
        self._painter.setPen(QColor(0, 0, 0))
        self._painter.fillRect(QRect(self.rect().x() + 10, self.rect().y() + 10, self.rect().width() - 20, self.rect().height() - 20), QColor(255, 255, 255))

以上代码中的paintEvent()函数会在窗口被绘制时被自动调用。我们需要在这个函数中绘制边框。在这个例子中,我们绘制了一个白色的矩形,剩下的黑色区域将会被当做边框。

步骤4:完整代码演示
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QBrush, QPen
from PyQt5.QtCore import QRect

class MyMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint)

    def paintEvent(self, event):
        self._painter = QPainter(self)
        self._painter.setPen(QColor(0, 0, 0))
        self._painter.fillRect(QRect(self.rect().x() + 10, self.rect().y() + 10, self.rect().width() - 20, self.rect().height() - 20), QColor(255, 255, 255))

if __name__ == '__main__':
    app = QApplication([])
    window = MyMainWindow()
    window.show()
    app.exec_()

这个例子演示了如何在PyQt5中更改MainWindow的边框样式。我们在窗口上绘制了一个自定义的边框,这个边框可以被进一步优化或修改以适应不同的项目需求。