qt designer / qwt plotten : wie widgets "verbinden"

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
zmanid
User
Beiträge: 11
Registriert: Donnerstag 23. Juli 2009, 14:18
Wohnort: Berlin

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
Zuletzt geändert von zmanid am Sonntag 26. Juli 2009, 19:10, insgesamt 1-mal geändert.
zmanid
User
Beiträge: 11
Registriert: Donnerstag 23. Juli 2009, 14:18
Wohnort: Berlin

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
Zuletzt geändert von zmanid am Sonntag 26. Juli 2009, 19:13, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

zmanid hat geschrieben:mangels Antworten frage ich nochmal anders:
Pack das doch bitte in code-Tags. Das ist sonst unmoeglich zu lesen.
Antworten