Hel*_*len 2 python matplotlib alpha-transparency pyqt5
我需要整个绘图窗口都是透明的,以便可以通过绘图看到我桌面上的镀铬窗口,这样我就可以在看到它后面的内容的同时向它添加点。
我上面列出的答案正是我想要做的,除了我的交互系统不适用于 TK。我想使用 Qt5Agg。当我运行上面的代码时,系统不会接受它——它说 QT5 当前正在运行。如果我在没有加载 QT 的情况下运行它,它会创建一个空白的透明窗口(是的!)但是如果我移动它或点击图标,它会变成不透明的黑色,没有任何情节。如果我将 tk 更改为 Qt5,它会抱怨电梯。如果我删除“win”代码,它就没有透明度(显然)。我已经尝试添加我能想到的所有内容来使画布透明,我可以更改颜色但不能使其透明。
import matplotlib
# make sure Tk backend is used
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4,2))
ax.plot([2,3,5,1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.lift()
win.attributes("-topmost", True)
win.attributes("-transparentcolor", "white")
plt.show()
Run Code Online (Sandbox Code Playgroud)
当我进行以下建议的更改时:eyllanesc
我在香草 Spyder 4.1.3 中找到了 | Python 3.7.7 64 位 | Qt 5.9.6 | PyQt5 5.9.2 | 视窗 10
为了导入,QtCore我必须首先
conda install pyqt
不够,那么 conda install pyqt5
并且 conda update --all
当我这样做时,代码运行没有错误。这是一个更好的第一个结果!,但我仍然只得到冻结的 mpl.fig 窗口。然而这一次,它是白色的。. . 控制台返回,但 mpl 窗口挂起。再次运行,一个新的冻结窗口。重新启动并再次运行:相同的结果。
我希望这是一个简单的错误;请教这个新手。
@eyllanesc
修订:Python 屏幕跟踪应用程序 - 需要一个几乎透明的绘图窗口。我需要整个绘图窗口都是透明的,以便可以通过绘图看到我桌面上的镀铬窗口,这样我就可以在看到它后面的内容的同时向它添加绘图 (x, y) 点。
添加命令win.setWindowFlags(QtCore.Qt.FramelessWindowHint)确实使窗口透明,但它使工具栏透明,去掉了标题栏,并删除了移动或调整窗口大小的能力。它还使得图形区域对鼠标不敏感,除非我越过线。我在 subplots 命令中添加了 facecolor 属性,这样我就可以看到发生了什么。只要我为 fig-alpha 或 ax-alpha 设置了一个非零值,图形就会对整个区域上的鼠标敏感。
我需要能够移动和调整窗口大小,并希望工具栏不透明或至少对整个工具栏上的鼠标敏感。你能帮忙解决这个问题吗?感谢过去的帮助!
## Python Code Fragment by Helen for Windows 10
## to test sequence creating plot with transparent
## background (to be used to trace and record xy pairs)
from PyQt5 import QtCore
import matplotlib
matplotlib.use("Qt5Agg") #define backend, must be before pyplot is imported
import matplotlib.pyplot as plt
# create a figure and a subplot
fig,ax = plt.subplots(figsize=(4, 2),facecolor=(1.,1.,0.,0.1)) #facecolor of figure
fig.patch.set_alpha(0.1)
ax.patch.set_alpha(0.1)
# plot some fixed points
ax.plot([2, 3, 5, 1])
fig.tight_layout()
#make window transparent to the desktop
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
win.setWindowFlags(QtCore.Qt.FramelessWindowHint)
win.setWindowTitle("My App")
plt.show()
Run Code Online (Sandbox Code Playgroud)
您必须使用在 Linux 上测试过的 Qt 标志:
from PyQt5 import QtCore
import matplotlib
# make sure Tk backend is used
matplotlib.use("Qt5Agg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4, 2))
fig.patch.set_alpha(0.0)
ax.patch.set_alpha(0.0)
ax.plot([2, 3, 5, 1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |