PyQt5实现置顶、位置固定、透明度设置
import sys
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel
from PyQt5.QtCore import Qt, QPoint
from PyQt5.QtGui import QPalette, QColor
class UnclosableDialog(QDialog):
def __init__(self, parent=None):
super(UnclosableDialog, self).__init__(parent, Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) # 始终置顶和无边框
# 设置窗口透明度
self.setWindowOpacity(0.5)
# 去除关闭按钮
self.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint)
# 设置窗口大小和位置
self.setGeometry(100, 100, 300, 200) # 这里的(100, 100)是窗口左上角的坐标,不是右上角
# 布局和控件
layout = QVBoxLayout()
label = QLabel("这是一个无法关闭的置顶对话框!", self)
layout.addWidget(label)
self.setLayout(layout)
# 重写keyPressEvent以忽略ESC键
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
event.ignore() # 忽略ESC键事件
else:
super().keyPressEvent(event) # 对于其他键,调用基类的实现
def main():
app = QApplication(sys.argv)
dialog = UnclosableDialog()
dialog.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()