Seite 1 von 1

Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 09:27
von QTim
Hallo,
ich habe eine kleine GUI geschrieben, welche ein TabWidget enthält und in die Tabs möchte ich gerne auf Knopfdruck eine Funktion plotten.
Zwar gibt es auf http://matplotlib.org/2.0.0/examples/us ... n_qt4.html ein beispiel, wie man einen Plot in eine Gui einbettet, allerdings bin ich noch ein Frischling in Python und verstehe nicht ganz, wie man den Plot in den Tab integriert.
Die Dokumentation von QT hat mir ebenfalls nicht weitergeholfen. http://doc.qt.io/qt-4.8/qtabwidget.html
Sie besagt, ich soll child widgets in die page widgets integrieren??? ich verstehe leider nicht, was die meinen..

Das habe ich bisher geschrieben:

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QMainWindow, QTabWidget, QWidget
import sys

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

class Ui_GTM_Form(QtGui.QWidget):

    def __init__(self):
        QtGui.QWidget.__init__(self)

        self.main_frame = QtGui.QWidget()                              
        self.tabWidget = QtGui.QTabWidget( self.main_frame )           
        self.vbox = vbox = QtGui.QVBoxLayout()                         
        vbox.addWidget(self.tabWidget)                                 

        
        self.setWindowIcon(QtGui.QIcon("Fraunhofer_icon.png"))
        self.setupUi(self)
        
       
    def StartGTM(self):
        print "Start"
        x = np.linspace(1, 2*np.pi, 100)
        y = np.sin(np.pi*x)+0.1*np.random.randn(100)

        f = Figure() 
        a = f.add_subplot(111)
        a.plot(x,y)


        tabwid = QTabWidget()
        WGA = QWidget()
        canvas = FigureCanvas(f)
        canvas.setParent(WGA)
        
        tabwid.addTab(WGA, "Tab A")		#??? ; Tab A ist der Name des ersten tabs

        tabwid.addWidget(FigureCanvas(f))
        canvas.show()
        
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Ui_GTM_Form()
    ex.show()
    sys.exit(app.exec_())

Hat jemand eventuell eine Idee, wie es funktionieren könnte? ich bin solangsam mit meinem Latein am Ende..
Ich nutze Python 2.7 mit PyQt4..

Re: Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 10:24
von __deets__
Qt4 ist wirklich sehr, sehr alt. Das solltest du gar nicht mehr benutzen.

Hier ein Tutorial fuer PyQt5 & matplotlib:

https://pythonspot.com/en/pyqt5-matplotlib/

Re: Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 10:28
von QTim
Danke, Problem ist leider nur dass ich PyQt5 nicht auf meinem Pi zum laufen bringen konnte, deshalb versuche ich es so

Re: Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 10:37
von __deets__
Wundert mich. Ich hab's laufen gehabt. Ich habe eigentlich sehr gute Erfahrungen mit Ubuntu MATE gemacht, und da gibt's das AFAIK mit bei.

Re: Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 10:42
von QTim
Ich muss auch gestehen, dass das mein erstes Projekt ist, indem ich mich mit dem Pi richtig auseinandersetze und mich gerade erst in die Linuxwelt einfinde. Viel Erfahrung habe ich noch nicht, da ich das ca erst seit zwei Wochen mache. Installiert ist Jessie, falls es interessiert :D

Re: Matplotlib Plot in Qt Gui TabWidget

Verfasst: Mittwoch 27. September 2017, 12:54
von __deets__
Ich habe kein Qt4 und werde das auch nicht extra installieren. Da es auch nicht mehr maintained wird, wuerde ich dir raten auf Ubuntu zu wechseln. Da findest du pyqt5:

https://packages.ubuntu.com/search?suit ... chon=names

Aber vielleicht hast du Glueck und wer anders hier kann dir helfen.