Seite 1 von 1

qt designer / qwt plotten : wie widgets "verbinden"

Verfasst: Freitag 24. Juli 2009, 10:15
von zmanid
Hallo liebes Forum,
ich hoffe ich bin hier an der richtigen stelle.
ich wuerde gerne eine pyqt/qwt applikation bauen (bisher leider null erfahrung mit qt...). Diese per designer erstellen, testen mit den qwt examples.
Die pyqwt beispiele funktionierern, qwt widgets sind auch sichtbar im Designer.

wie kann ich ein beispiele (zB SimplePlot.py) in einem widget erscheinen lassen, dass ich im designer gebaut hab?
folgende Dateien/Klassen hab ich:

SimpleDemo.py :

Code: Alles auswählen

class SimpleData(Qwt.QwtData):
	def __init__(self, function, size):

Im Konstruktor von SimplePlot werden alle eigenschaften dieses plots gesetzt und fertig.

Code: Alles auswählen

class SimplePlot(Qwt.QwtPlot):
	def __init__(self, *args):
        Qwt.QwtPlot.__init__(self, *args)
        ...

qwt_form_ui.py: (gebaut aus dem designer):
(hier taucht nun ein widget QwtPlot namens "qwtPlotWindow" in das der plot aus dem Demo dargestellt werden soll)

Code: Alles auswählen

class Ui_form_qwtplot(object):
	form_qwtplot.setObjectName("form_qwtplot")
        form_qwtplot.resize(468, 300)
        self.qwtPlotwindow = QwtPlot(form_qwtplot)
        self.qwtPlotwindow.setGeometry(QtCore.QRect(40, 30, 400, 200))
        self.qwtPlotwindow.setObjectName("qwtPlotwindow")
        ....
Und nun mein Programm, in dem alles zusammen kommen soll:
my_qwt_app.py:

Code: Alles auswählen

import qwt_form_ui
from qwt_form_ui import Ui_form_qwtplot
	...
class SimpleData(Qwt.QwtData): 
	...	(wie im Beispiel)
	
class SimplePlot(Qwt.QwtPlot):
	...	(wie im Beispiel)
	
class MyQwtPlotter(Qt.QMainWindow,Ui_form_qwtplot):   # wird also abgeleitet und angepasst aus dem per designer ertelltem formular
	def __init__(self, parent = None):
		myplot = SimplePlot()
		self.qwtPlotWindow = myplot
			
	"""
?? und jetzt es erscheint nur das leere basisfenster wie im designer erstellt (leerer plot).
wie unterhalten sich diese widgets?: ist denn die Vererbung hier richtig? wie verbinde ich denn SimplePlot widget mit self.qwtPlotWindow? Muss ich in der Klasse SimplePlot ein Signal einfuerhen und dann im MyQwtPlotter ein connect() bauen? Oder gibt es vom qwtPlotWindow schon so ein signal wie changed()? Wie verbinde die das qwt widget in MyQwtPlotter richtig mit SimplePlot ?
"""
#hauptprogramm

Code: Alles auswählen

def make():
	demo = MyQwtPlotter()
	demo.show()
	return demo

def main(args):
    app = Qt.QApplication(args)
    demo = make()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main(sys.argv)



Danke im voraus fuers lesen und die Antworten
dirk

anders gefragt

Verfasst: Sonntag 26. Juli 2009, 14:55
von zmanid
mangels Antworten frage ich nochmal anders:

wenn ich in der Klasse:

Code: Alles auswählen

class MyQwtPlotter(Qt.QMainWindow,Ui_form_qwtplot)
das Widget

Code: Alles auswählen

self.qwtPlotWindow  (abgeleitet aus Ui_form_qwtplot)
anspreche, kann ich da direkt im eigenen Konstruktor hineinschreiben, was zu tun ist (achsen, daten etc). Funktioniert auch wunderbar.

Wenn ich die Klasse: SimplePlot(Qwt.QwtPlot) erstelle und diese mit Daten füttere,
wird sie(wie im Beispielcode) ja richtig angezeigt/gemalt.

Wie muss MyQwtPlotter richtig aussehen, damit das Widget self.qwtPlotWindow nun den Plot anzeigt, wie er im Konstruktor von SimplePlot() erzeugt wird?

Muss ich 3 Basisklassen angeben fuer MyQwtPlotter, also:

Code: Alles auswählen

MyQwtPlotter(Qt.QMainWindow,Ui_form_qwtplot, SimplePlot)
?

Oder braucht SimplePlot() noche eine

Code: Alles auswählen

copy(self)
Methode, damit ich im MyQwtPlotter schreiben kann:

Code: Alles auswählen

myplot = SimplePlot()
self.qwtPlotWindow = myplot
Danke fuer die aufklärung...
gruss dirk

Re: anders gefragt

Verfasst: Sonntag 26. Juli 2009, 15:15
von cofi
zmanid hat geschrieben:mangels Antworten frage ich nochmal anders:
Pack das doch bitte in code-Tags. Das ist sonst unmoeglich zu lesen.