PyQt5实现置顶、位置固定、透明度设置

时间:2025-04-05 20:38:08
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()