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())

效果:

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


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

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


3,去边框:

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

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

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

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

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


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

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

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

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

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

代码:

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)  # 窗体置顶,无边框,在任务栏不显示图标。

 

你可能感兴趣的:(Qt/PyQt,pyqt5,python,qt5)