python - PySide2 将鼠标事件传递给系统
问题描述
我正在使用QDialog
启用透明度来为屏幕捕获工具选择屏幕区域。当用户在透明小部件内单击时,我想忽略鼠标事件以便系统处理它。这可能吗?
我正在尝试在 Linux 上实现这一目标。
我尝试过的一些事情没有成功:
QtWidgets.QWidget.setWindowFlags(QtCore.Qt.WindowTransparentForInput)
QtWidgets.QWidget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
QtWidgets.QWidget.setMask(QtGui.QRegion(self.geometry()))
- 子类
mousePressEvent
化和忽略事件
解决方案
您必须使用该标志X11BypassWindowManagerHint
,以便省略旁边的窗口管理器,WindowTransparentForInput
以便系统知道它只需要显示窗口但不会通知您有关输入的信息。
w.setWindowFlags(w.windowFlags() |
QtCore.Qt.WindowTransparentForInput |
QtCore.Qt.X11BypassWindowManagerHint)
推荐阅读
- matlab - Matlab中的函数fzero不收敛
- r - 在 R 中组装/组合具有重叠的图像
- javascript - 为什么在调用console.log的时候jest document.createElement('div')等元素都是空的?
- c - char[][] 和 char** 的区别
- python - 在 macOS 上的 Atom 中打开 platformio-ide-terminal 时如何更改使用的 Python
- json - 如何从 Json Response Firebase 获取子级
- python - 如何将不带逗号的字符串解析为python列表?
- python - 在 aws-sam 中包含本地源代码目录和文件?
- php - 带有柯比的垂直标签
- asp.net-core - 如何将角色包含到返回的 JWT 令牌中?