04.PyQt5顶层窗口设置

04.PyQt5顶层窗口设置

去掉顶层窗口,自行添加最小、最大、关闭按钮。且三个按钮始终位于窗口右上方。

import sys
from PyQt5.Qt import *
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(500,500)
        self.wondow_status()
    def wondow_status(self):
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.btn_w = 
### PyQt5 中实现窗口圆角效果 在 PyQt5 中,可以通过设置 `QWidget` 或其子类(如 `QMainWindow`, `QDialog` 等)的样式表来创建具有圆角效果的窗口。具体来说,可以利用 CSS 类似的样式表语法来定义窗口的外观特性。 对于整个窗口应用圆角边框的效果,通常需要处理窗口本身的绘制行为,因为默认情况下 Qt 的窗口框架不受样式表影响。一种常见做法是在自定义窗口类中重写 `paintEvent` 函数,并使用 `QRadialGradient` 或者简单的画笔操作来完成这一目标[^1]。 下面是一个通过继承 `QWidget` 并覆盖 `paintEvent` 来实现带有圆角的透明窗口的例子: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QColor, QBrush, QRadialGradient from PyQt5.QtCore import Qt class RoundedWindow(QWidget): def __init__(self): super().__init__() # 设置无边框窗口标志位 self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) # 设置背景透明度 self.setAttribute(Qt.WA_TranslucentBackground) def paintEvent(self, event): painter = QPainter(self) brush = QBrush() # 创建径向渐变并填充到刷子对象里 gradient = QRadialGradient(70, 80, 60) gradient.setColorAt(0.0, QColor("#FFFFFF")) gradient.setColorAt(1.0, QColor("#DDDDDD")) brush.setStyle(Qt.SolidPattern) brush.setTexture(QPixmap()) brush.setColor(QColor('#ffffff')) brush.setGradient(gradient) rect = self.rect() painter.setRenderHints(QPainter.Antialiasing | QPainter.HighQualityAntialiasing, True) painter.fillRect(rect, brush) pen = painter.pen() pen.setWidth(2) pen.setColor(QColor('#aaaaaa')) painter.setPen(pen) painter.drawRoundedRect(rect, 20, 20) if __name__ == '__main__': app = QApplication(sys.argv) window = RoundedWindow() window.resize(300, 200) window.show() sys.exit(app.exec_()) ``` 此代码片段展示了如何构建一个拥有平滑边缘的圆形矩形区域作为应用程序主界面的基础构件。这里的关键在于调用了 `drawRoundedRect()` 方法指定了想要达到的圆角半径参数 (本例中为 20)。 另外,在某些场景下也可以考虑直接给顶层部件添加如下所示的样式声明以简化开发过程: ```css /* 应用于顶级 widget */ MyCustomWidget { border-radius: 10px; background-color: rgba(255, 255, 255, 0); } ``` 需要注意的是这种方法可能不会总是有效取决于操作系统及其主题配置等因素的影响;因此更推荐采用上述基于绘画事件的方式来自定义窗口外形[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值