PyQt5 创建一个窗体、窗体置顶、去边框、窗体透明子控件不透明、隐藏任务栏图标

0,说明:当多次调用 setWindowFlags() 方法时,只有最后一次调用会生效,之前的设置会被覆盖。因此想要设置多个效果时,使用 | 运算符

       self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)  # 置顶,且去掉边框

还有一些其他效果,比如去掉窗体的最小化最大化按钮:self.setWindowFlags(Qt.WindowCloseButtonHint)   # 只保留关闭按钮


1,先用 Qt Designer 创建一个界面

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from ui_test import Ui_MainWindow  # ui 使用 Qt designer 创建

class MyWindown(QMainWindow):

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("账号登陆")  # 设置标题
        self.setWindowIcon(QIcon("logo.ico"))  # 添加图标

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindown()
    w.show()
    sys.exit(app.exec())

效果:


2,窗体置顶显示,不会被普通窗体掩盖:在程序中添加如下代码

        self.setWindowFlags(Qt.WindowStaysOnTopHint)  # 置顶显示


3,去边框:

        说明:窗体去掉边框后就不能随意拖动了,需要自己实现拖动功能。

        去边框后可移动的一种实现方式可以参考这篇博客:PyQt5 Qt 窗体去边框,去边框后可移动

        self.setWindowFlags(Qt.FramelessWindowHint)  # 去边框

效果:对比第一个效果图,边框没有了


4,窗体背景透明,但是子控件不透明

        self.setWindowFlags(Qt.FramelessWindowHint)  # 去边框
        self.setAttribute(Qt.WA_TranslucentBackground)  # 窗体背景透明

说明:窗体背景透明子控件不透明,一定要先去掉窗体边框,否则效果无法直视

效果:背景变成透明的了,看到了窗体后面的代码,label控件自身因为没有背景色,所以只显示了文字。

代码:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from ui_test import Ui_MainWindow  # ui 使用 Qt designer 创建


class MyWindown(QMainWindow):

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("账号登陆")  # 设置标题
        self.setWindowIcon(QIcon("logo.ico"))  # 添加图标
        self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)  # 置顶,且去掉边框
        self.setAttribute(Qt.WA_TranslucentBackground)  # 窗体背景透明


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindown()
    w.show()
    sys.exit(app.exec())

5,隐藏任务栏图标

主要是设置窗体的:Qt.Tool 属性

# 通常用于设置主程序的附属窗口属性,比如工具条,它隶属于主程序,不需要以独立的任务栏图标呈现
self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.Tool)  # 窗体置顶,无边框,在任务栏不显示图标。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值