利用类变量对窗口的变量进行引用,防止被回收(导致窗口一闪而过),重启时先显示新窗口后关闭自己
大概思路
事件说明
mousePressEvent
,鼠标按下事件,主要记录按下的坐标mouseMoveEvent
,鼠标移动事件,用于移动窗口mouseReleaseEvent
,鼠标弹起事件,用于判断是否需要隐藏窗口enterEvent
,鼠标进入事件,用于窗口隐藏后,是否需要暂时显示预览leaveEvent
,鼠标离开事件,用于窗口暂时显示后自动隐藏效果SetParent
函数设置外部窗口的parent
为Qt的窗口QWidget.createWindowContainer(QWindow.fromWinId(窗口ID))
生成QWidgetGetWindowLong
得到原来窗口的样式属性style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)
和exstyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
win32gui
模块获取鼠标所在位置的窗口大小(未去掉边框)和rgb颜色运行 FramelessWindow.py | 运行 NativeEvent.py
重写鼠标事件
QWidget
(FramelessWindow
)作为父窗口, 一个TitleBar
作为标题栏, 一个QWidget
作为底部容器FramelessWindow
设置为背景透明,但是需要绘制一定宽度的透明度很高的矩形边框用来接受鼠标事件(变形鼠标样式进行调整窗口大小)TitleBar
的最小化最大化关闭等按钮事件关联到父窗口里TitleBar
中的鼠标按下移动事件得到坐标也传递到父窗口调用move方法进行窗口移动windows api
win32gui
设置薄边框nativeEvent
事件拦截边框的系统边框的显示,并返回各个方向运行 SingleApplication.py | 运行 SharedMemory.py
QWidget
包含一个 QLabel
, 其中 QWidget
通过 paintEvent
绘制气泡形状QPropertyAnimation
属性动画来移动气泡和改变气泡的透明度QParallelAnimationGroup
动画组来同时运行两个动画PyQt 结合 Opencv 进行人脸检测; 由于直接在主线程中进行特征点获取,效率比较低
依赖文件
在PyQt中使用Theading线程
主要参考 背景连线动画.html
self.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint)
和 self.setAttribute(Qt.WA_TranslucentBackground, True)
达到无边框和背景透明QDialog
中放置一个QWidget
作为背景和圆角QWidget
中放置其他内容
好处在于可以减少窗口更新的次数(用途有频繁渲染的界面)
isSignalConnected
判断是否连接receivers
获取连接的数量来判断osk.exe
florence
,onboard
,kvkbd
,这三种屏幕键盘需要自行安装
通过定时器不停的修改光标图片来实现动态效果
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。