PyQt/窗口
2018-10-28 23:29:23 +08:00
..
ScreenShot 更新分类目录 2018-10-28 23:29:23 +08:00
无边框自定义标题栏窗口 更新分类目录 2018-10-28 23:29:23 +08:00
README.md 更新分类目录 2018-10-28 23:29:23 +08:00
分割窗口的分割条重写.py 更新目录结构 2018-10-28 00:24:47 +08:00
外部窗口跟随.py 更新窗口的目录 2018-10-28 17:33:47 +08:00
嵌入外部窗口.py 更新目录 2018-10-28 16:36:14 +08:00
消息对话框倒计时关闭.py 更新分类目录 2018-10-28 23:29:23 +08:00
窗口重启.py 更新目录结构 2018-10-28 00:24:47 +08:00
简单探测窗口和放大截图.py 更新窗口的目录 2018-10-28 17:33:47 +08:00
简单的窗口贴边隐藏.py 更新目录结构 2018-10-28 00:24:47 +08:00

重启窗口Widget

截图

截图

分割窗口的分割条重绘

原理在于QSplitter在创建分割条的时候会调用createHandle函数

于是通过重新写createHandle返回自己的QSplitterHandle类

并通过QSplitterHandle的paintEvent实现绘制其它形状 重写mousePressEvent和mouseMoveEvent来实现鼠标的其它事件

截图

截图

简单的窗口贴边隐藏

大概思路

  • 1.思路是当窗口进入左边,顶部,右边一半时,此时判断窗口的坐标
  • 2.如果窗口的x坐标小于0 则需要隐藏到左边
  • 3.如果窗口的y坐标小于0 则需要隐藏到顶部
  • 4.如果窗口的x坐标大于屏幕宽度-窗口宽度/2 则需要隐藏到右边

事件

  • 1.mousePressEvent鼠标按下事件主要记录按下的坐标
  • 1.mouseMoveEvent鼠标移动事件用于移动窗口
  • 1.mouseReleaseEvent鼠标弹起事件用于判断是否需要隐藏窗口
  • 1.enterEvent鼠标进入事件用于窗口隐藏后是否需要暂时显示预览
  • 1.leaveEvent鼠标离开事件用于窗口暂时显示后自动隐藏效果

内嵌外部窗口

原理思路:

  • 1.使用SetParent函数设置外部窗口的parent为Qt的窗口
  • 2.Qt使用QWidget.createWindowContainer(QWindow.fromWinId(窗口ID))生成QWidget
  • 3.使用GetWindowLong得到原来窗口的样式属性style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)和exstyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
  • 4.这里还原窗口后不会显示用spy++发现没有了WS_VISIBLE样式未解决

截图

1

简单跟随其它窗口

1、利用win32gui模块获取目标窗口的句柄

2、通过句柄获取目标窗口的大小位置并设置自己的位置

3、当句柄失效时关闭自己

4、主要是检测时间在10毫秒以下很流畅

截图

1

简单探测窗口和放大截图

利用win32gui模块获取鼠标所在位置的窗口大小(未去掉边框)和rgb颜色, 主要思路是利用一个全屏的全透明鼠标穿透的窗口(目的在于绘制矩形框和截图)

截图

1

消息对话框倒计时关闭

通过继承QMessageBox实现倒计时关闭的对话框

截图

截图1