<Pyqt5> PyQt5自定义标题栏

【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口 【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口 文章目录【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口前言1.文件架构【新增】2.实现效果【增加】3. 标题栏Qtdesigner的ui设计(ui设计代码)4. 设置标题和图标【改】5.最大化最小化关闭事件6.窗口拖动移动,窗口改变大小7.增加内容窗口事件【新增】8.仿百度网盘色调QSS美化【 阅读详情
class MyBar(QWidget):

    def get_button(self, icon, onClick):
        btn_size = 35
        btn = borderless_tool_button(QIcon(icon), size=ThpQSize(16, 16))
        btn.clicked.connect(onClick)
        btn.setFixedSize(btn_size, btn_size)
        btn.setStyleSheet("QToolButton { border:None; background:transparent; } ")
        return btn

    def __init__(self, parent):
        super(MyBar, self).__init__()
        self.parent = parent
        print(self.parent.width())
        self.layout = QHBoxLayout()
        self.layout.setContentsMargins(0,0,0,0)
        self.title = QLabel("My Own Bar")

        self.btn_close = self.get_button(":/res/close.png", self.btn_close_clicked)
        self.btn_min = self.get_button(":/res/minimize.png", self.btn_min_clicked)
        self.btn_max = self.get_button(":/res/maximize.png", self.btn_max_clicked)

        self.title.setFixedHeight(35)
        self.title.setAlignment(Qt.AlignCenter)
        self.layout.addWidget(self.title)
        self.layout.addWidget(self.btn_min)
        self.layout.addWidget(self.btn_max)
        self.layout.addWidget(self.btn_close)

        self.title.setStyleSheet("""
            background-color: #171745;
            color: white;
        """)
        self.setLayout(self.layout)
        self.title.setFont(yh_font(11))

        self.start = QPoint(0, 0)
        self.pressing = False

    def resizeEvent(self, QResizeEvent):
        super(MyBar, self).resizeEvent(QResizeEvent)
        self.title.setFixedWidth(self.parent.width())

    def mousePressEvent(self, event):
        self.start = self.mapToGlobal(event.pos())
        self.pressing = True

    def mouseMoveEvent(self, event):
        if self.pressing:
            self.end = self.mapToGlobal(event.pos())
            self.movement = self.end-self.start
            self.parent.setGeometry(self.mapToGlobal(self.movement).x(),
                                self.mapToGlobal(self.movement).y(),
                                self.parent.width(),
                                self.parent.height())
            self.start = self.end

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressing = False

    def btn_close_clicked(self):
        self.parent.close()

    def btn_max_clicked(self):
        self.parent.showMaximized()

    def btn_min_clicked(self):
        self.parent.showMinimized()

class DemoWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setMinimumSize(1160, 800)
        self.setStyleSheet("background-color: #205E86")
        self.titleBar = MyBar(self)
        layout = QtWidgets.QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 10)
        layout.setSpacing(0)
        layout.addWidget(self.titleBar)
        layout.addStretch()
        self.setLayout(layout)
def set_dark_theme(app: QApplication):
    palette = QPalette()
    palette.setColor(QPalette.Window, QColor(53, 53, 53))
    palette.setColor(QPalette.WindowText, Qt.white)
    palette.setColor(QPalette.Base, QColor(25, 25, 25))
    palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53))
    palette.setColor(QPalette.ToolTipBase, Qt.black)
    palette.setColor(QPalette.ToolTipText, Qt.white)
    palette.setColor(QPalette.Text, Qt.white)
    palette.setColor(QPalette.Button, QColor(53, 53, 53))
    palette.setColor(QPalette.ButtonText, Qt.white)
    palette.setColor(QPalette.BrightText, Qt.red)
    palette.setColor(QPalette.Link, QColor(42, 130, 218))
    palette.setColor(QPalette.Highlight, QColor(42, 130, 218))
    palette.setColor(QPalette.HighlightedText, Qt.black)
    app.setPalette(palette)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    set_dark_theme(app)
    window = DemoWidget()
    window.show()
    sys.exit(app.exec_())


在这里插入图片描述

Qt5 自定义标题栏 【代码】Qt5 自定义标题栏。 阅读详情

相关推荐

PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化

也可以把标题类设置为一个接口文件,调用即可,不过这要修改逻辑代码。通过这个函数获取改变大小的坐标范围,只有鼠标处于这个范围,就可以改变程序窗口大小。函数不是按钮的信号与槽函数,在这里说是因为它是设置三个按钮的图标关键字,使用了。百度网盘程序的标题栏的颜色便灰,内容窗口便白色,使用屏幕拾色器获取具体颜色编码。因为设置了主窗口透明化,所以要专门用这个过滤器来恢复鼠标形状,两个子窗口。我只设置了三个方向可以改变窗口大小,其他的可以自行修改。单独设置一个函数来整理无边框,标题和图标设置。初始化函数里,会很混乱的。

集电极 1万+

python+pyqt5设置窗体图标和任务栏图标及窗体标题的方法

python+pyqt5设置窗体图标和任务栏图标及窗体标题的方法

w1015601709的博客 1万+

PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效(2)

PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效(2) 已修复上一篇文章中提到的 Bug,增加状态切换动画。

2402_84665876的博客 657

pyqt 标题栏设置

在PyQt中,可以通过QWidget或其子类(如QMainWindow或QDialog)的setWindowTitle()方法来设置窗口的标题栏。

计算机辅助工程 1390

PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效

PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效

2402_84665876的博客 647

PyQt 设置圆角窗口

设置QMainWindow的centralwidget的border样式即可。去掉了窗口的边框,可以自定义标题栏(含关闭、缩小窗口的标题栏)

weixin_45699595的博客 3002

python PyQt5自定义标题栏

from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * import sys # 按钮高度 BUTTON_HEIGHT = 30 # 按钮宽度 BUTTON_WIDTH = 30 # 标题栏高度 TITLE_HEIGHT = 30 class TitleWidget(QWidget)...

晓虎虎在此的博客 1万+

PyQt 替换控件:自定义美化标题栏

以下是一个示例代码,演示了如何创建一个具有自定义标题栏的窗口。这样,我们就实现了一个具有自定义标题栏的窗口。这样,我们就实现了一个具有自定义标题栏的窗口。方法中,我们设置了窗口的标题为 “Custom Title Bar”,并。它具有一个固定高度,并在。函数中绘制了一个矩形作为标题栏的背景。的自定义主窗口(QMainWindow),并将 53))在上面的示例代码中,我们创建了一个名为。在上面的示例代码中,我们创建了一个名为。在上面的示例代码中,我们创建了一个名为。在上面的示例代码中,我们创建了一个名为。

QasdCpp的博客 299

PyQt5 自定义可拖动标题栏

PyQt5 自定义可拖动标题栏 将此段代码加入到我的上一篇博客中即可 实现标题栏的拖动 def getRestoreInfo(self): return self.restorePos, self.restoreSize def mousePressEvent(self, QMouseEvent): self.isPressed = True ...

晓虎虎在此的博客 1469

从Wi-Fi到蓝牙:手把手教你用Cadence Virtuoso搭建一个2.4GHz锁相环频率综合器(含PFD/CP/VCO模块设计)

本文详细介绍了如何在Cadence Virtuoso中设计一个2.4GHz锁相环频率综合器(PLL),涵盖从系统架构到模块级设计的全流程。重点解析了PFD、CP和VCO等核心模块的设计技巧与仿真验证方法,帮助模拟集成电路设计师掌握高频PLL的实现要点,满足Wi-Fi和蓝牙等无线通信标准的要求。

weixin_30315723的博客 418

【中文OCR】中文字符图片的分割方法

最近想做一个关于中文OCR的小系列,也是对之前做的东西的一个总结。作为这个系列的第一篇,我觉得还是有必要说一下关于中文字符图片分割的问题。因为现在开源的OCR代码比较多,相对而言对字符图片的分割的方法提的比较少,尤其是中文字符图片的分割还是有一定困难在里面的。 一、普遍使用的切割方法 现在大部分开源项目上用切割方法还是基于水平、垂直投影字符切割方法。 原理比较简单容易理解,也比较容易实现。先...

zhangzm0128 1万+

pyqt5 qwidget 边框_PyQt5中带边框的自定义标题栏

以下是您必须遵循的步骤:有你的主窗口,可以是QMainWindow,或者QWidget,或者任何你想继承的[widget]。在设置旗,self.setWindowFlags(Qt.FramelessWindowHint)在实现你自己的移动。在实现自己的按钮(关闭、最大、最小)实现自己的调整大小。在下面是一个小例子,其中包含move around和实现的按钮。您仍然需要使用相同的逻辑实现调整大小。i...

weixin_39628247的博客 1489

oracle两节点RAC,由于gipc导致某节点crs无法启动问题分析

两节点RAC,其中1 节点集群CRS无法启动。经过分析原因为2节点gipcd进程异常,导致节点之间无法正常通信,重启2节点gipcd.bin后问题得以恢复。 从现象来看,是 ora.crsd...

cuibaye0692的博客 4536

实战PyQt5: 113-QSS+定制窗口的标题栏

定制标题栏 在前面的学习中可以看到,我们可以使用QSS为窗口的部件定义各种炫酷的效果,但是一个窗口的标题栏始终是和所使用的操作系统相关,在Win7下,是win7样式的标题栏,在Win10下是win10样式的标题栏,在Ubuntu下是Ubuntu样式的标题栏,Qt这样设计,保持了应用在不同的平台下与相应的系统的外观上的统一。但是也带来了一些问题,比如我们在窗口中使用深色主题,但是标题栏一直保持浅色主题,看起来有些不协调。如果想在标题栏和窗口统一使用一个主题样式,则需要对标题栏进行定制处理。 在Qt下,可以

seniorwizard的专栏 3632

UG\NX二次开发 判断对象是虚线还是实线

网友提问“怎么区分虚线实线”,这个可以通过函数判断。

王牌飞行员_里海的博客 357

YOLOv12改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 1511

pyqt5-自定义停靠栏控件,支持自定义标题栏和父类方法设置停靠栏的控件

【代码】pyqt5-自定义停靠栏控件,支持自定义标题栏和父类方法设置停靠栏的控件。

m0_62653695的博客 616

大数据NiFi(十一):NiFi入门案例一

注意:数据写出的目录可以不需要提前在对应节点上创建,默认是可以自动创建,可以通过“Create Missing Directories”属性配置。将输出文件的权限设置为此属性的值,格式必须是UNIX rwxrwxrwx,用-来代替被拒绝的权限(例如rw-r--r--)或八进制数字(例如644),可以使用表达式,例如${file.permissions}。这里需要使用到的处理器是“GetFile”和“PutFile”,完成以上需求对“GetFile”和“PutFile”相关属性进行配置。

Lansonli(蓝深李)的博客 1490

自定义拖动范围【标题栏】——PyQT5

自定义拖动范围【标题栏】——PyQT5。

贰半的博客 603

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 442

发那科机器人通信库使用指南与踩坑记录

GitHubNuGet(如本文基于该库,在 C# / .NET 下通过 TCP 与 FANUC 机器人控制器通信,实现读当前位姿、PR 寄存器、以及 DI/DO/GI/GO 等 IO 的读写。GitHubNuGet(如本文基于该库,在 C# / .NET 下通过 TCP 与 FANUC 机器人控制器通信,实现读当前位姿、PR 寄存器、以及 DI/DO/GI/GO 等 IO 的读写。

songhuangong123的博客 323

pyQt5 学习笔记(9)练习:自定义标题栏和窗体移动

一、自定义标题栏 在pyQt中,顶层的窗口会自动添加标题栏: 面向开发者的工具或软件通常使用默认的样式,但是面向用户的软件,则一般会通过自定义标题栏,使软件界面更加富有个性化。这一小节的自定义标题栏的功能,主要实现标题栏的最小化,最大化,已经关闭功能。其代码如下所示: from PyQt5.Qt import * import sys #0.创建一个自定义的窗口类 class Window(Q...

白杨木屋 3987

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PyQt自定义标题栏(界面美化,附C++和Python源码)

文章目录1. 简述2.代码说明(1)主窗口(2)标题栏(3)完整代码(4)美化(QSS)3.源代码链接 1. 简述   这几天给老师做项目用到了PyQt5,说一些自己的想法,用python写qt界面我觉得如果懂C++和Qt是最好的,因为PyQt5没有相应的官方文档,我做项目时都是对照着Qt的C++文档做的,而且二者基本差别不大,只是一些小细节有略微不同而已,当然不懂Qt直接做也可以,但是这难免很费...

梦的灰色边沿... 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Matplotlib黑科技:用PyQt5后端自定义你的绘图窗口标题栏(隐藏/替换控制按钮)

本文详细介绍了如何利用PyQt5后端深度定制Matplotlib绘图窗口,包括窗口状态管理、标题栏自定义以及高分辨率支持等高级技巧。通过隐藏/替换控制按钮和实现自定义标题栏,开发者可以打造专业级的数据可视化界面,提升用户体验和界面美观度。

mm9012的博客 557

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PyQt 无边框自定义标题栏及最大化最小化窗体大小调整

PyQt 无边框自定义标题栏及最大化最小化窗体大小调整

m0_37302966的博客 713

pyqt5 无边框界面,放大缩小正常化,窗口可拖动,窗口可自定义缩放

self._MinimumButton.setFixedHeight(self._TitleLabel.height()) # 设置按钮高度为标题栏高度。self._MaximumButton.setFixedHeight(self._TitleLabel.height()) # 设置按钮高度为标题栏高度。self._CloseButton.setFixedHeight(self._TitleLabel.height()) # 设置按钮高度为标题栏高度。

m0_56219944的博客 2798
上一篇: <Python> win32 监听USB插拔事件
下一篇: 【转】一文看懂MVC和MVVM;MVC,MVP,MVVM的区别与联系,以及它们的优缺点,应用场景
_Lulixue_
博客等级 码龄16年 45粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值