pyqt5 灰色 提示框 覆盖原来的窗口 效果演示

下面这个方法不对,
实现这种效果,找美工,做一个png图片,图片是 部分透明的那种,
self.setWindowOpacity 这个方法 会影响子控件,

代码如下:


import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *


# class MainWindow(QMainWindow):
# 	def __init__(self, *args, **kwargs):
# 		super().__init__(*args, **kwargs)
# 		self.setWindowTitle('主界面')
# 		self.showMaximized()

class tipWindow(QWidget):
    def __init__(self, rect, pos, parent=None):
        super(tipWindow, self).__init__(parent)
        # self.resize(200, 200)
        self.move(pos)
        self.setGeometry(rect)
        self.setObjectName("tipWindow")

        self.setStyleSheet("#tipWindow{background-color: rgb(150, 150, 150)}")
        self.setWindowModality(Qt.ApplicationModal)
        #self.setWindowModality(Qt.WindowModal )
        #self.setAttribute(Qt.WA_TranslucentBackground, True)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Tool)
        self.setWindowOpacity(0.8)
        self.setWindowTitle('遮挡界面')
        self.pushButton_enter = QPushButton()
        self.pushButton_enter.setText("遮挡界面")
        self.verticalLayout = QVBoxLayout()
        #self.pushButton_enter.setWindowOpacity(1)

        self.setLayout(self.verticalLayout)

        self.verticalLayout.addWidget(self.pushButton_enter)

        self.pushButton_enter.clicked.connect(self.close_win)

    def close_win(self):
        self.close()

class logindialog(QDialog):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle('登录界面')
        self.resize(200, 200)
        self.setFixedSize(self.width(), self.height())
        self.setWindowFlags(Qt.WindowCloseButtonHint)

        self.frame = QFrame(self)
        self.verticalLayout = QVBoxLayout(self.frame)
        self.lineEdit_account = QLineEdit()
        self.lineEdit_account.setPlaceholderText("请输入账号")
        self.verticalLayout.addWidget(self.lineEdit_account)

        self.lineEdit_password = QLineEdit()
        self.lineEdit_password.setPlaceholderText("请输入密码")
        self.verticalLayout.addWidget(self.lineEdit_password)

        self.pushButton_enter = QPushButton()
        self.pushButton_enter.setText("进入下一个界面")
        self.verticalLayout.addWidget(self.pushButton_enter)

        self.frame1 = QFrame(self)
        self.verticalLayout = QVBoxLayout(self.frame1)
        self.pushButton_quit = QPushButton()
        self.pushButton_quit.setText("回到主页面")
        self.verticalLayout.addWidget(self.pushButton_quit)
        self.frame1.setVisible(False)
        self.pushButton_enter.clicked.connect(self.on_pushButton_enter_clicked)
        self.pushButton_quit.clicked.connect(self.on_pushButton_enter_clicked_1)
        self.tipwin  = None


    def on_pushButton_enter_clicked(self):
        #self.frame1.setVisible(True)
        #self.frame.setVisible(False)
        # 窗口显示了之后才能正确得到在屏幕上的绝对坐标
        rect = self.frameGeometry()
        print(rect)
        x = self.x()
        print('x= ',x)
        y = self.y()
        print('y= ',y)
        pos = self.pos()
        print(pos)
        self.tipwin = tipWindow(rect, pos,self)
        self.tipwin.show()

    def on_pushButton_enter_clicked_1(self):
        self.frame1.setVisible(False)
        self.frame.setVisible(True)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    dialog = logindialog()
    if dialog.exec_() == QDialog.Accepted:
        # the_window = MainWindow()
        # the_window.show()
        sys.exit(app.exec_())

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值