LISHUZUOXUN_yangjiang/LSZXPagesLibrary/pop_message_dialog.py

119 lines
3.8 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class PopDialogMessage:
def __init__(self, parent):
super().__init__()
self.cancel_action = None
self.commit_action = None
self.parent = parent
desktop = QDesktopWidget()
self.screenRect = desktop.availableGeometry()
self.dialog = QDialog(
flags=Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint
) # 设置无图标和标题
self.dialog.setStyleSheet("background-color:#ffffff;")
self.dialog.setContentsMargins(0, 0, 0, 0)
self.dialog.setFixedSize(int(self.screenRect.width() * 0.35),
int(self.screenRect.height() * 0.35)) # 设置对话框的宽度为屏幕的35%高度为屏幕的70%
self.cancel_btn = self._init_cancel_button()
self.commit_btn = self._init_commit_button()
self.cancel_btn.clicked.connect(self.cancel_button_action)
self.commit_btn.clicked.connect(self.commit_button_action)
self.title_label = QLabel()
self.title_label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
self.title_label.setWordWrap(True)
self.title_label.setStyleSheet(
"font: 30px \"Microsoft YaHei UI\";"
"letter-spacing: 4px;"
"margin-left: 6px;"
"margin-right: 6px;"
)
self.btn_layout = QHBoxLayout()
self.btn_layout.addWidget(self.cancel_btn, 50)
self.btn_layout.addWidget(self.commit_btn, 50)
# 总布局
self.main_layout = QVBoxLayout()
self.main_layout.addWidget(self.title_label, 50)
self.main_layout.addLayout(self.btn_layout, 50)
self.dialog.setLayout(self.main_layout)
# 添加遮罩层设置parent确保遮罩层在父页面中显示
self.overlay = QWidget(self.parent)
self.overlay.setStyleSheet("background-color: rgba(0, 0, 0, 0.5);")
self.overlay.resize(self.screenRect.width(), self.screenRect.height())
self.overlay.hide()
def show(self, title_label):
self.overlay.show()
self.title_label.setText(title_label)
self.dialog.show()
def hide(self):
self.dialog.hide()
self.overlay.hide()
# 取消按钮响应事件
def cancel_button_action(self):
self.dialog.hide()
self.overlay.hide()
if self.cancel_action:
self.cancel_action()
# 确认按钮响应事件
def commit_button_action(self):
self.dialog.hide()
self.overlay.hide()
# 调用链接函数
if self.commit_action:
self.commit_action()
def connect(self, func):
self.commit_action = func
def cancel_connect(self, func):
self.cancel_action = func
# 初始化取消按钮
@staticmethod
def _init_cancel_button():
cancel_btn = QPushButton("取消")
cancel_btn.setStyleSheet(
"border: 1px solid #222222;"
"color: #222222;"
"padding-top: 30px;"
"padding-bottom: 30px;"
"margin-left: 20px;"
"margin-right: 20px;"
"margin-bottom: 20px;"
"border-radius: 4px;"
"font: 24px \"Microsoft YaHei UI\";"
)
return cancel_btn
# 初始化确认按钮
@staticmethod
def _init_commit_button():
commit_btn = QPushButton("确定")
commit_btn.setStyleSheet(
"border: 1px solid #409eff;"
"color: #ffffff;"
"padding-top: 30px;"
"padding-bottom: 30px;"
"margin-left: 20px;"
"margin-right: 20px;"
"margin-bottom: 20px;"
"border-radius: 4px;"
"font: 24px \"Microsoft YaHei UI\";"
"background-color: #409eff;"
)
return commit_btn