QwtPlot zeichnet nix

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
PythonStümper
User
Beiträge: 3
Registriert: Freitag 29. Mai 2009, 16:28

Liebe Leute!

Ich mache gerade meine ersten Gehversuche mit QtDesigner und versuche, ein Programm zu erstellen das mir eine Kurve plottet.
Das Fenster zeigt mir Achsen und Titel, ich kann die Skalierung einstellen, etc., nur die Kurve selbst, die ich zeichnen will, erscheint nicht. Wahrscheinlich ein Anfängerfehler, und ich verstehe einfach die Klassenphilosophie nicht (komme noch aus der FORTRAN Ecke, das sagt wahrscheinlich alles).

Wenn ich den ganzen Ballast aus meiner Widget-Klasse rausschmeiße, bleibt noch folgender Code übrig.

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
from PyQt4.Qwt5 import QwtPlot,QwtPlotCurve
from abaquse_ui import Ui_ABAQuse as Dlg
import sys

class MeinWidget(QtGui.QMainWindow, Dlg):

   def __init__(self):
#-- Original stuff
      QtGui.QMainWindow.__init__(self)
      self.setupUi(self)
#-- End of Original stuff
#
# my changes
      DrawButton = self.pushButton_2
      DrawButton.setEnabled(True)
      self.connect(DrawButton, QtCore.SIGNAL("clicked()"), self.onDraw)

   def onDraw(self):
      Plot = self.qwtPlot
      Plot.setAxisTitle(QwtPlot.xBottom,"time history (days)")
      Plot.setAxisTitle(QwtPlot.yLeft,"Number of jobs")
      Curve = QwtPlotCurve("test")
      Curve.x = [0.,0.5,1.0,1.5,2.0]
      Curve.y = [0.,1.,1.5,1.,0.]
      Curve.attach(Plot)
      Plot.replot()
      
#main loop until OK or Cancel is pressed
app = QtGui.QApplication(sys.argv)
widget = MeinWidget()
widget.show()
sys.exit(app.exec_())
Sieht vielleicht irgend jemand auf Anhieb, warum es nicht läuft? Ich habe hier keinen, den ich fragen kann. :(
Liebe Grüße und Dank im Voraus.
Ingo
Zuletzt geändert von PythonStümper am Sonntag 31. Mai 2009, 21:58, insgesamt 1-mal geändert.
PythonStümper
User
Beiträge: 3
Registriert: Freitag 29. Mai 2009, 16:28

Hallo Leute,
Da die Erfahrungen mit der Qwt Library vielleicht doch noch nicht so verbreitet sind, wie ich dachte, habe ich mich selbst nochmal rangesetzt und versucht, aus im www erhältlichen Codeschnipseln das Problem selbst zu lösen.
Sie da: das Problem war die Definition der Kurve selbst:
Die "Curve"-Definition von oben muss richtig lauten:

Code: Alles auswählen

      xval = [0.,0.5,1.0,1.5,2.0]
      yval = [0.,1.,1.5,1.,0.]
      Curve = QwtPlotCurve("test")
      Curve.setData(xval,yval)
      Curve.attach(Plot)
      Plot.replot()
Dann klappt's. :D
Vielleicht hat ja ein anderer nochmal ein ähnliches Problem.
Gruß
Ingo

P.S. Wenn man die Kurve verändern will, muss man die alte löschen, z.B. mit einem Slot QwtPlot.clear. War mir vorher nicht klar.
Antworten