Ich denke, ich muss mal etwas weiter ausholen.
Das Python-Script wird immer als Gast innerhalb eines Host-Systems ausgeführt. Das Host-System ist ein Delphi-Programm, welches die Daten zur Verfügung stellt, auf die im Script zugegriffen werden soll/kann. Dazu stellt das Host-System eine IDE zur Verfügung mit deren Hilfe der Anwender beliebigen Python-Code innerhalb des Hosts ausführen kann. Dabei hat der Anwender die freie Wahl, ob das Script im Hintergrund oder mit GUI läuft.
Momentan habe ich ein Beispiel-Script, in dem alle zur Verfügung stehenden Werte des Host-Systems in Klassen gekapselt sind. Jede Klasse hat eine Funktion, vergleichbar mit einem Event, die vom Host ausgelöst wird, wenn sich der zugehörige Wert ändert. So kann man innerhalb dieser Klassenfunktion den Wert verwenden und weiter verarbeiten.
Hintergrund des Ganzen ist es, dem Anwender die Möglichkeit zu geben eigene Scripte/Programme zuschreiben, mit Allem was Python zur Verfügung stellt und dabei die vom Host bereitgestellten Werte zu nutzen.
Beispiel:
Das Host-System stellt Echtzeit-Börsendaten zur Verfügung. Die Pythonklasse dazu ist wie folgt definiert:
Code: Alles auswählen
class RT:
def __init__(self, Symbol='', Ask_TimeStamp='', Ask_Price='', Ask_Volume='', Bid_TimeStamp='', Bid_Price='', Bid_Volume='' ):
self.Symbol = ''
self.Ask_TimeStamp = ''
self.Ask_Price = ''
self.Ask_Volume = ''
self.Bid_TimeStamp = ''
self.Bid_Price = ''
self.Bid_Volume = ''
def OnRT(self):
print self.Symbol
""" Place your code for RT calculations here """
# end OnRT()
# end class RT
Die Funktion OnRT() wird vom Host-System immer dann aufgerufen wenn ein neure Kurswert vorliegt. Alle Properties werden mit den entsprechenden Werten vom Host befüllt und stehen im Python-Script zur Vefügung. Innerhalb des OnRT() kann der Anwender jetzt die Daten weiterverarbeiten, also bspw. in eine Datei schreiben, per TCP/IP weiterleiten, Berechnungen anstellen, in einen Chart plotten oder was auch immer mit Python möglich ist.
Für den Fall das der Anwender sich entscheidet ein Programm mit GUI zu verwenden soll er dies auch tun können, egal welches Framework/Toolkit er vorzieht.
Ich wollte es der Einfachheit halber an einem kleinen Beispiel mit Tkinter machen.
Wenn ich es recht verstehe läuft unter Python eine GUI-Anwendung, hier am Beispiel Tkinter, innerhalb der Befehle
Code: Alles auswählen
from Tkinter import *
root = Tk()
l = Label( root, text='bla bla bla' )
l.pack()
# weiterer Code
mainloop()
Wenn ich z.B. das Label updaten möchte, dann kann ich ja etwas in der Form wie:
Code: Alles auswählen
while True:
time.sleep(0.5)
l[ "text" ]='anders bla bla bla'
root.update()
vor mainloop() an der Stelle '# weiterer Code' einfügen und das Label würde alle 0,5 Sekunden geupdatet. Oder?
Nun wäre meine Frage an die Python-Freaks:
Wo und wie muss ich meine Klasse innerhalb des o.g. GUI-Beispieles einfügen das z.B. das Label mit Werten aus der OnRT() Funktion befüllt würde. Geht das direkt oder über eine globale Zwischenvariable?
Danke schon mal im Voraus.