jerch hat geschrieben:@Alfons Mittelmeyer:
Wenn Du was Modifizierbares mit Python brauchst, musst Du die Sache anders angehen. Python ist von der Maschine wegabstrahiert, daher werden alle "Wie komm ich an den Speicher ran oder kann den wiederfreigeben?"-Versuche mit Frust oder furchtbaren Krücken enden. Beispiele dafür hast Du schon genug geliefert. Wenn Du so low level rangehen willst, dann nimm eine Sprache, welche dafür ausgelegt ist.
@jerch, das mit dem Speicher hat sich längst erledigt. Meine Scripte bestehen jetzt aus einer Funktion main() und nichts noch extra. Damit ist dann alles lokal und das Speicherthema interessiert mich deshalb nicht mehr.
jerch hat geschrieben:Wenn Du Python als "Baukasten" für den Anwender erhalten willst, geht es nur mit einer Bibliothek - heisst Du hältst Primitive für alles Mögliche vor und vertraust darauf, dass der Anwender programmieren kann und die Bibliothek richtig einsetzt. Mit diesem Ansatz bist Du in guter Gesellschaft, alle großen Drittbibliotheken funktionieren nach diesem Prinzip.
Speziell habe ich eine Biblothek mit einer Erweiterung für tkinter gemacht. Der Anwender braucht davon nur ein paar Interface Funktionen, da die GUI durch einen GUI Designer erstellt wird. Viele Funktionen dieser Bibliothek braucht dagegen der GUI Designer.
jerch hat geschrieben:Wenn Du nicht auf die Programmierkünste der Anwender vertrauen kannst, hilft nur ein Pluginsystem, welches die Freiheitsgrade der Aktionen genau festklopft.
Bei letzterem Ansatz kannst Du dann auch die "Langlebigkeit" steuern, bei ersterem nicht.
Die Bibliothek, die ich habe erlaubt unbegrenztes Nachladen von Python Scripten, so wie man auch mit einem Webbrowser soviel Seiten aufrufen kann wie man will. Die Idee ist auch, tkinter GUI Anwendungen in einem Fenster laufen zu lassen und auch immer welche nachladen zu können, so wie man mit einem Webbrowser surft. Allerdings der Webbrowser ist gesichert gegen Unsinn. Mein System bisher nicht:
Code: Alles auswählen
def main(parent):
# das dürfte jemand noch machen und dabei seine in einem Fenster laufende Anwendung beenden.
parent.destroy()
# aber das sollte niemand tun, denn das würde ja Zerstörung eines 'Browser'-Teils bedeuten
parent.master.destroy()
Also wenn man vor hat, so etwas wie einen Python tkinter Script Browser zu machen, müßte man ihn gegen Zerstörung und sonstigen Unfug schützen.
Aber so einfach ist das nicht. Da müßte man sich etwas anderes überlegen, und den sogenannten 'Browser' eventuell gar nicht in Python und tkinter programmmieren, damit es da keinerlei Zugriff gibt. Oder kann man sonst ein Python GUI Fenster in einem anderen Python GUI Fenster anzeigen, wenn es am Besten eigenständige getrennte Anwendungen sind?