当前位置: 首页 > news >正文

调整应用窗口透明度

朋友问我有没有软件透明得,一开始没理解,他给我发一个,我一看原来时调整窗口透明度得,想着python应该也可以实现,就写了一个。

效果图如下:

源码如下:
 

import sys
import ctypes
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QSlider, QHBoxLayout, QFrame
from PySide2.QtCore import Qt, QTimer
import win32gui
import win32condef is_valid_window(hwnd, title):"""判断窗口是否为有效的主窗口,只显示在任务栏的窗口"""if not title:return False# 获取窗口类名class_name = win32gui.GetClassName(hwnd)if "Cortana" in title or "SearchUI" in class_name:return False# 检查窗口是否可见,并且不处于最小化状态if not win32gui.IsWindowVisible(hwnd) or win32gui.IsIconic(hwnd):return False# 检查窗口的样式,确保它是应用程序窗口而非工具窗口等style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)if not (style & win32con.WS_EX_APPWINDOW):return Falsereturn Trueclass WindowBlock(QFrame):"""表示单个窗口信息的块"""def __init__(self, hwnd, title, parent=None):super().__init__(parent)self.hwnd = hwndself.title = title[:8]  # 最多显示8个字符self.init_ui()def init_ui(self):# 设置边框self.setFrameStyle(QFrame.Box | QFrame.Raised)self.setLineWidth(1)  # 边框线宽# 布局:横向布局,标题在左,滑块在右layout = QHBoxLayout()# 设置统一的固定大小self.setFixedSize(50, 150)  # 宽度100,高度150,根据你的需求调整# 调整内部布局的间距和边距,让整体更紧凑layout.setContentsMargins(5, 5, 5, 5)  # 控制窗口边距,越小越紧凑layout.setSpacing(3)  # 控制内部元素之间的间距# 竖直显示窗口标题self.title_label = QLabel(self.format_vertical_text(self.title))self.title_label.setAlignment(Qt.AlignCenter)layout.addWidget(self.title_label)# 透明度滑块,竖向布局self.slider = QSlider(Qt.Vertical)  # 改为竖向拖动self.slider.setMinimum(0)self.slider.setMaximum(255)self.slider.setValue(255)self.slider.valueChanged.connect(self.change_transparency)layout.addWidget(self.slider)self.setLayout(layout)def format_vertical_text(self, text):"""将文本格式化为竖直排列"""return '\n'.join(list(text))def change_transparency(self, value):"""根据滑块值调整窗口透明度"""style = win32gui.GetWindowLong(self.hwnd, win32con.GWL_EXSTYLE)win32gui.SetWindowLong(self.hwnd, win32con.GWL_EXSTYLE, style | win32con.WS_EX_LAYERED)win32gui.SetLayeredWindowAttributes(self.hwnd, 0, value, win32con.LWA_ALPHA)class WindowTransparencyApp(QWidget):"""主窗口类,展示所有可调整透明度的窗口"""def __init__(self):super().__init__()self.setWindowTitle("窗口透明度调整器")self.setGeometry(300, 300, 800, 200)  # 横向布局,调宽度# 总体布局self.layout = QHBoxLayout()  # 改为横向布局self.layout.setContentsMargins(5, 5, 5, 5)  # 控制主窗口的边距self.layout.setSpacing(5)  # 控制每个窗口块之间的间距self.setLayout(self.layout)# 设置定时器每秒更新窗口列表self.timer = QTimer(self)  # 使用 QTimerself.timer.timeout.connect(self.update_window_list)self.timer.start(1000)  # 每秒刷新一次窗口列表# 初始化窗口列表self.windows = []def update_window_list(self):"""每秒更新当前打开的窗口列表,保持最新状态。"""current_hwnds = [hwnd for hwnd, _ in self.windows]new_windows = []def enum_window_callback(hwnd, _):title = win32gui.GetWindowText(hwnd)if is_valid_window(hwnd, title):if hwnd not in current_hwnds:  # 仅添加新窗口new_windows.append((hwnd, title))# 枚举所有窗口win32gui.EnumWindows(enum_window_callback, None)# 如果有新窗口,更新显示if new_windows:for hwnd, title in new_windows:self.windows.append((hwnd, title))window_block = WindowBlock(hwnd, title)self.layout.addWidget(window_block)# 检查是否有窗口关闭for hwnd, title in self.windows[:]:if not win32gui.IsWindow(hwnd):self.windows.remove((hwnd, title))# 删除对应的窗口块for i in range(self.layout.count()):widget = self.layout.itemAt(i).widget()if isinstance(widget, WindowBlock) and widget.hwnd == hwnd:widget.deleteLater()if __name__ == "__main__":app = QApplication(sys.argv)window = WindowTransparencyApp()window.show()window.adjustSize()sys.exit(app.exec_())

成品下载:Release 1.0 · duanxcseven/hide (github.com)

相关文章:

调整应用窗口透明度

朋友问我有没有软件透明得,一开始没理解,他给我发一个,我一看原来时调整窗口透明度得,想着python应该也可以实现,就写了一个。 效果图如下: 源码如下: import sys import ctypes from PySid…...

启智畅想集装箱号码智能识别原理,OCR识别应用

集装箱号码用途: 集装箱号码在填写托运单时是必填项,用于标识和跟踪货物运输过程中的集装箱。它有助于海关管理和物流跟踪,确保货物能够顺利通过海关检查并按时送达目的地。 集装箱号码智能识别原理: 在深入探讨集装箱号码OCR&…...

React基础知识

说明:react版本为 18.3.1 React是什么 React由Meta公司研发,是一个用于构建Web和原生交互界面的库。(开发基于浏览器的web应用和基于mac和android的移动应用)React的优势 1.相较于传统基于DOM开发的优势:组件化的开…...

Java基础:面向对象编程3

1 Java可变长参数 1.1 概述 Java 的可变长参数(Varargs)是在 Java 1.5 中引入的功能,允许方法接受任意数量的相同类型的参数。可变参数的语法是在参数类型后面加上三个点(...),例如 int... numbers。 1.…...

实验kubernetes的CPU绑定策略

CPU 管理配置 CPU 管理策略通过 kubelet 参数 --cpu-manager-policy 或 KubeletConfiguration 中的 cpuManagerPolicy 字段来指定。 支持两种策略: none:默认策略。static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占…...

Zsh 安装与配置

目录 1 环境配置 1.1 基本工具安装 1.2 安装 oh-my-zsh 1.3 从.bashrc中迁移配置(可选) 2 主题配置 2.1 内置主题 2.2 自定义主题 2.2.1 推荐主题 3 插件安装 3.1 推荐插件 3.1.1 zsh -autosuggestions 3.1.2 zsh-syntax-highlighting 3.2 启…...

Redis可视化工具Redis Desktop Manager(附安装包)

前言 redis工具,我相信每个开发都需要,如果每次查都去client执行指令,我怕查完之后,老大就要发版咯。我之前一直用的Redis可视化工具RedisDesktopManager,总觉得差点意思,直到同事推荐了个新的&#xff0c…...

sql server删除过期备份文件脚本

一、通过脚本查看过期文件,时间可以自己设定 for /f "delims" %i in (dir /b /a-d "E:\mybak_file\*.bak" ^| findstr /i "backup" ^| findstr /v /i "no_backup") do if "%~ti" LSS "2024/09/29 16:50&qu…...

【Docker系列】Docker查看镜像架构

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Python案例 | 测试网络的下载速度上传速度和 ping 延迟

使用了 speedtest 库来测试网络的下载速度上传速度和 ping 延迟 注意,这里需要先卸载speedtest,再安装speedtest-cli pip uninstall speedtest pip install speedtest-cli其次运行代码: # 使用了 speedtest 库来测试网络的下载速度上传速度…...

一键找回,2024四大固态硬盘数据恢复工具推荐!

虽然固态硬盘(SSD)因其读写速度快、功耗低等特点受到广泛欢迎,但它并非无懈可击,数据丢失的问题依然存在。如果你也遇到了固态硬盘数据丢失的问题,那么一下的这几款软件可以一试! 福昕数据恢复 直达链接&…...

数据结构~AVL树

文章目录 一、AVL树的概念二、AVL树的定义三、AVL树的插入四、AVL树的平衡五、AVL树的验证六、AVL树的删除七、完整代码八、总结 一、AVL树的概念 AVL树是最先发明的自平衡二叉查找树,AVL是⼀颗空树,或者具备下列性质的二叉搜索树:它的左右子…...

ffmpeg面向对象——rtsp拉流探索(1)

目录 0.avformat_open_input的rtsp流程程纯净版1.rtsp拉流流程图2.rtsp拉流对象图 标准rtsp协议的基石是tcp,本节探索下ffmpeg的rtsp拉流协议tcp的创建及rtsp协商过程。 0.avformat_open_input的rtsp流程程纯净版 ffmpeg拉流,从avformat_open_input接口…...

【启明智显分享】ZX7981PM WIFI6 5G-CPE:2.5G WAN口,2.4G/5G双频段自动调速

昨天,我们向大家展现了ZX7981PG WIFI6 5G-CPE,它强大的性能也引起了一波关注,与此同时,我们了解到部分用户对更高容量与更高速网口的需求。没关系!启明智显早就预料到了!ZX7981PM满足你的需求! …...

openresty“热部署“lua

一、前言 频繁reload 或者restart影响测试使用nginx,修改lua脚本后要实际查看效果值,使用关闭lua代码缓存,可以实现实时查看代码效果。 每次请求都会从磁盘中加载lua脚本,生产上面不要开启,影响响应速度 二、修改ngin…...

基于SpringBoot+Vue+MySQL的企业招聘管理系统

系统展示 用户前台界面 管理员后台界面 企业后台界面 系统背景 在当今数字化转型的大潮中,企业对于高效、智能化的人力资源管理系统的需求日益增长。招聘作为人力资源管理的首要环节,其效率与效果直接影响到企业的人才储备与竞争力。传统的招聘方式不仅耗…...

vue3之defineComponent

defineComponent 是 Vue 3 中提供的一个辅助函数,用于定义组件。它可以帮助你更好地利用 TypeScript 的类型推断和 IDE 的自动补全功能。defineComponent 主要用于组合式 API(Composition API)和单文件组件(SFC)。 使…...

springboot+vue家政服务管理平台

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…...

python pip安装requirements.txt依赖与国内镜像

python pip安装requirements.txt依赖与国内镜像 如果网络通畅,直接pip安装依赖: pip install -r requirements.txt 如果需要国内的镜像,可以考虑使用阿里的,在后面加上: -i http://mirrors.aliyun.com/pypi/simple --…...

解决Qt的QWidget设计师编辑UI后和软件运行显示不一致

解决方法,只需要在main.cpp中加入下面一段代码 if (QT_VERSION > QT_VERSION_CHECK(5, 6, 0))QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true); 完整的代码如下 int main(int argc, char *argv[]) { if (QT_VERSION > QT_VERSION_C…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...

【AI News | 20250609】每日AI进展

AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体,通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具,在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...

claude3.7高阶玩法,生成系统架构图,国内直接使用

文章目录 零、前言一、操作指南操作指导 二、提示词模板三、实战图书管理系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 在线考试系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 四、感受 零、前言 现在很多AI大模型可以…...