

















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 25
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


















Tommaso Mazzoni
(^1) Introduzione
(^2) Grafica
(^3) MplWidget
(^4) Main
(^5) Qualche Upgrade
(^1) Introduzione
(^2) Grafica
(^3) MplWidget
(^4) Main
(^5) Qualche Upgrade
(^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’:
app = QtGui.QApplication(sys.argv)
dmw = DesignerMainWindow()
dmw.connection()
dmw.show()
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)