如何在Matplotlib中禁用关闭按钮

3

我使用matplotlib创建了一个图形窗口,但是我不希望用户手动关闭它。有没有办法禁用右上角的关闭按钮?请参见截图


你可以查看这个问题:如何禁用matplotlib窗口的最大化、最小化和关闭按钮? - ImportanceOfBeingErnest
1个回答

3
解决方案将取决于所使用的后端。
PyQt后端,您可以执行以下操作:
import matplotlib
# make sure Qt backend is used
matplotlib.use("Qt4Agg")
from PyQt4 import QtCore  
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.setWindowFlags(win.windowFlags() | QtCore.Qt.CustomizeWindowHint)
win.setWindowFlags(win.windowFlags() & ~QtCore.Qt.WindowCloseButtonHint)
plt.show()

这将禁用关闭按钮(而不是隐藏它)。

enter image description here

Tk

我不确定Tk是否能够控制关闭按钮。但是可以实现绘制一个完全无边框的窗口。

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.overrideredirect(1) # draws a completely frameless window

plt.show()

1
好的,但是还有Alt+F4可以关闭窗口! :) (在Windows操作系统中) - Apostolos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接