首页 > 其他分享 >PyQt5实现置顶、位置固定、透明度设置

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

时间:2024-08-21 14:56:22浏览次数:13  
标签:__ 窗口 Qt self 透明度 PyQt5 100 置顶

在PyQt5中,要实现一个始终置顶、位置固定、透明度设置、去除关闭按钮且无法通过常规方式关闭的对话框窗口,需要对QDialog进行一系列的自定义设置。以下是一个详细的示例代码,展示了如何实现这些功能:

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

注意

  1. 始终置顶:通过Qt.WindowStaysOnTopHint标志实现。
  2. 无边框和去除关闭按钮:通过Qt.FramelessWindowHintsetWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint)实现。
  3. 透明度:通过setWindowOpacity(0.5)设置。
  4. 位置固定:通过setGeometry设置窗口的初始位置和大小。但请注意,这里的(100, 100)是窗口左上角的坐标,而不是右上角的。如果你想要它距离屏幕右上角100像素,你需要根据屏幕的分辨率和窗口的宽度来计算左上角的坐标。
  5. 忽略ESC键:通过重写eventFilter方法并捕获KeyPress事件来实现。当检测到ESC键被按下时,调用event.ignore()来忽略该事件。

如果你想要窗口距离屏幕右上角100像素,并且窗口宽度为300像素,那么你可以这样计算左上角的x坐标:屏幕宽度 - 窗口宽度 - 100。但是,由于PyQt5没有直接提供获取屏幕宽度的方法,你可能需要使用QDesktopWidgetQScreen来获取这些信息。不过,在这个简单的例子中,我们假设屏幕宽度足够大,直接使用(100, 100)作为示例。

如果你需要更精确地控制窗口位置,可以考虑使用QScreen来获取当前屏幕的几何信息,并据此计算窗口的坐标。

标签:__,窗口,Qt,self,透明度,PyQt5,100,置顶
From: https://blog.csdn.net/m0_54490473/article/details/141366157

相关文章

  • 置顶博客列表
    为精简首页置顶博客的数量,将需要置顶博客列出如下:1、[原创控件]为lazarusTDataSet增加类似TClientDataSet的Delta功能,可直接生成增删改的SQL(2024-08-17增加blob类型转base64)1、为lazarusTDataSet增加类似TClientDataSet的Delta功能,可直接生成增删改的SQL2、[原创控件]QFCompon......
  • pyqt5 combox选择事件绑定
    pyqt5combox选择事件绑定 importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QComboBox,QVBoxLayout,QLabelclassComboBoxExample(QWidget):def__init__(self):super().__init__()self.initUI()definitUI(self):......
  • 导航栏置顶问题
    1.问题描述页面滚动导航栏消失1.滚动前2.滚动后2.解决方案在配置导航栏的页面给导航栏加入CSS属性position:sticky;z-index:1000;background-color:#fff;源代码<template><divclass="common-layout"><el-container><el-headercl......
  • pyqt5+win32+python联合在CAD绘图无法绘制
    1初始报错想法是:写好pyqt5的简单界面代码后,用一个信号槽连接到CAD绘制图形。出现了报错:显示“已成功连接到CAD”,说明连接没有问题,但是“在CAD中绘制线条时出错:(-2147352567,'发生意外。',(0,None,None,None,0,-2147024809),None)”。搜索后给出可能原因是:1-参......
  • 基于YOLOv10深度学习的交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • 打造“明厨亮灶”方案:AI+视频智能监管让食品安全与透明度并行
    在食品安全日益成为公众关注焦点的今天,提升餐饮行业的透明度,增强消费者信任,已成为行业发展的重要趋势。其中,“明厨亮灶”作为一种创新的餐饮管理模式,正逐步成为提升食品安全水平、促进餐饮业健康发展的有效手段。明厨亮灶主要服务于市场监管部门、餐饮部门等行业主管部门,“AI智能......
  • vue3+vite+ts 颜色选择器组件支持颜色吸取,透明度
    ciw-color-picker-vue:vue3+vite+ts颜色选择器,支持颜色吸取,透明度,与浏览器原生颜色选择器相似,与饿了么颜色选择器相似使用了ciw-color-picker-vuenpmi ciw-color-picker-vue 安装 npmiciw-color-picker-vue全局引入方式main.ts或main.js import'ci......
  • 使用 Python和PyQt5 打造 你的专属文件查询工具! 附源码
    本文将介绍如何使用Python和PyQt5创建一个简单的文件查询工具。该工具允许用户选择一个目录,并在该目录中搜索特定的文件。依赖库首先,确保你已经安装了PyQt5库:pipinstallPyQt5步骤第一步:导入库我们需要导入必要的库,包括sys、os和PyQt5。importsysimportosfromP......
  • 用Python和PyQt5打造你的专属音乐播放器!轻松创建带封面的音乐列表
    在本文中,我们将介绍如何使用Python的PyQt5库创建一个简单的音乐播放器。这个音乐播放器可以显示歌曲的封面,并且点击封面就可以播放对应的歌曲。依赖库首先,我们需要安装PyQt5库。可以使用以下命令进行安装:pipinstallPyQt5功能如下:显示歌曲列表:程序会在指定的目录(在......
  • 如何在 Pyqt5 Python 中实现 QTableWidget 列过滤器中的搜索栏?
    我使用pyqt5创建了一个QTableWidget,并成功地在表格小部件的每一列中添加了过滤选项,并使用堆栈溢出上可用的答案之一。过滤器按预期工作,但我想在顶部的过滤器中添加搜索栏来搜索值。在我的python脚本中,过滤器中可能有大约50多个唯一值。因此,如果有一种方法可以在过滤器......