Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'utilizzo di PyQT e matplotlib per la creazione di grafici interattivi, Guide, Progetti e Ricerche di Informatica gestionale

Una guida all'utilizzo di PyQT e matplotlib per la creazione di grafici interattivi, con un esempio pratico di realizzazione di una finestra con PyQT contenente un plot realizzato con matplotlib. Vengono inoltre illustrate le classi MplWidget e MplCanvas, che permettono di creare un'interfaccia grafica per i grafici matplotlib.

Tipologia: Guide, Progetti e Ricerche

2019/2020

Caricato il 17/07/2020

salvo_miceli
salvo_miceli 🇮🇹

4.3

(6)

12 documenti

1 / 25

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Introduzione Grafica MplWidget Main Qualche Upgrade
PyQT e matplotlib: un’introduzione
Tommaso Mazzoni
Tommaso Mazzoni PyQT e matplotlib: un’introduzione 1 / 18
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Anteprima parziale del testo

Scarica Introduzione all'utilizzo di PyQT e matplotlib per la creazione di grafici interattivi e più Guide, Progetti e Ricerche in PDF di Informatica gestionale solo su Docsity!

PyQT e matplotlib: un’introduzione

Tommaso Mazzoni

Sommario:

(^1) Introduzione

(^2) Grafica

(^3) MplWidget

(^4) Main

(^5) Qualche Upgrade

Sommario:

(^1) Introduzione

(^2) Grafica

(^3) MplWidget

(^4) Main

(^5) Qualche Upgrade

Sommario:

(^1) Introduzione

(^2) Grafica

(^3) MplWidget

(^4) Main

(^5) Qualche Upgrade

Realizzare una finestra con pyQT contenente un plot realizzato con matplotlib, ad esempio un visore per una camera CCD.

Bibliografia: Matplotlib for Python Developers (a chi interessa lo posso inviare per mail...)

class Ui_mainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8(MainWindow)) MainWindow.resize(648, 696) self.centralwidget= QtGui.QWidget(MainWindow) self.centralwidget.setObjectName( _fromUtf8(centralwidget)) self.gridLayoutWidget= QtGui.QWidget( self.centralwidget) self.mpl= MplWidget(self.gridLayoutWidget) self.mpl.setObjectName( fromUtf8(mpl)) self.mplCombo= QtGui.QComboBox(self.gridLayoutWidget) self.mplCombo.setObjectName(_fromUtf8(mplCombo)) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)

from PyQt4 import QtCore, QtGui from mplwidget import MplWidget

def retranslateUi(self, MainWindow): MainWindow.setWindowTitle( QtGui.QApplication.translate( MainWindow, MainWindow, None, QtGui.QApplication.UnicodeUTF8)) self.coord_label.setText( QtGui.QApplication.translate( MainWindow, TextLabel, None, QtGui.QApplication.UnicodeUTF8))

from PyQt4 import QtCore, QtGui from mplwidget import MplWidget

def retranslateUi(self, MainWindow): MainWindow.setWindowTitle( QtGui.QApplication.translate( MainWindow, MainWindow, None, QtGui.QApplication.UnicodeUTF8)) self.coord_label.setText( QtGui.QApplication.translate( MainWindow, TextLabel, None, QtGui.QApplication.UnicodeUTF8))

from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg

class MplWidget(QtGui.QWidget): def init(self, parent = None): QtGui.QWidget.init(self, parent)

self.canvas = MplCanvas()

self.ntb = NavigationToolbar2QTAgg(self.canvas,parent)

self.vbl = QtGui.QVBoxLayout() self.vbl.addWidget(self.canvas) self.vbl.addWidget(self.ntb) self.setLayout(self.vbl)

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg

class MplCanvas(FigureCanvasQTAgg): def init(self): self.fig = Figure() self._a = self.fig.add_subplot(111) FigureCanvasQTAgg.init(self, self.fig) FigureCanvasQTAgg.setSizePolicy( self,QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) FigureCanvasQTAgg.updateGeometry(self) self.setFocusPolicy(QtCore.Qt.StrongFocus) self.setFocus() self._producer= self.getFrame self._a.format_coord = self.imageReportPixel

def imageReportPixel(self, x, y): im= self._im.get_array() self._xx = np.clip(int(np.round(x)), 0, im.shape[1]-1) self._yy = np.clip(int(np.round(y)), 0, im.shape[0]-1) self._vv = im[self._yy, self._xx] return " "

if name == ’main’:

crea l’applicazione GUI

app = QtGui.QApplication(sys.argv)

inizializzazione finestra

dmw = DesignerMainWindow()

inizializzazione connessioni

dmw.connection()

dmw.show()

esegui

sys.exit(app.exec_())

#in DesignerMainWindow init self._imageFuncDict={ ’CCD_frame’: self.mpl.canvas.getFrame, ’Dark_frame’: self.darkFrame} self.mplCombo.addItems(self._imageFuncDict.keys()) self.mplCombo.setCurrentIndex(0)

#in DesignerMainWindow connection self.mplCombo.currentIndexChanged[QtCore.QString]. connect(self.setImageFunc) self.keypress= self.mpl.canvas.mpl_connect( ’key_press_event’, self.key_press)

QtCore.QObject.connect(self.mpl.canvas, QtCore.SIGNAL(’sigClicked’), self.coord_xy)