Я работаю над приложением pyqt5, и есть виджет, содержащий график, созданный с помощью matplotlib. Я хочу добавить функцию, которая позволяет пользователю нажимать на график, и он будет открыт во весь экран. Как я могу это сделать?
График в виджете построен так:
class CanvasUp(FigureCanvas):
def __init__(self, parent=None, width=5, height=5, dpi=50):
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111)
FigureCanvas.__init__(self, self.fig)
self.setParent(parent)
self.plot()
def plot(self):
# obtaining data
...
ax = self.figure.add_subplot(111)
self.figure.text(0.5, 0.5, "TEST", transform=ax.transAxes,
fontsize=40, color='gray', alpha=0.5,
ha='center', va='center')
ax.fill_between(x1, y1=y1, label='psavert', alpha=0.5, color='tab:green', linewidth=2)
dt = ax.plot(x1, y1)
ax.set_title(lab, loc='left')
ax.grid()
self.draw_idle()
Если я упросту мою программу, она будет выглядеть так:
from PyQt5.QtWidgets import QDialog, QVBoxLayout
from PyQt5.QtWidgets import QApplication
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import sys
class CanvasUp(FigureCanvas):
def __init__(self, parent=None, width=5, height=5, dpi=50):
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111)
FigureCanvas.__init__(self, self.fig)
self.setParent(parent)
self.plot()
def plot(self):
try:
x1 = [1, 2, 3]
y1 = [3, 2, 1]
ax = self.figure.add_subplot(111)
ax.set_ylim([0, max(y1)*1.15])
self.figure.text(0.5, 0.5, "test", transform=ax.transAxes,
fontsize=40, color='gray', alpha=0.5,
ha='center', va='center')
ax.fill_between(x1, y1=y1, label='psavert', alpha=0.5, color='tab:green', linewidth=2)
dt = ax.plot(x1, y1)
ax.grid()
self.draw_idle()
except:
print("Bad graphs")
class MainWindow(QDialog):
def __init__(self):
super().__init__()
self.setGeometry(50, 50, 700, 700)
layout = QVBoxLayout(self)
plot = CanvasUp()
layout.addWidget(plot)
self.show()
if __name__ == '__main__':
App = QApplication(sys.argv)
window = MainWindow()
sys.exit(App.exec())