Hallo,
Momentan komme ich überhaupt nicht weiter:
Ich habe zwei Klasse geschrieben, die ich jetzt in ein Programm importiere.
Nun soll eine Funktion der zweiten Klasse ausgeführt werden, sobald sich ein Rückgabewert der ersten Klasse ändert.
Zum Programm:
Die erste Klasse dient zum Zeichnen auf einem Canvas. (unter Tkinter)
Die zweite Klasse enthält eine Listbox, in die Rückgabewerte aus der ersten Klasse eingefügt werden sollen.
Im Prinzip suche ich lediglich eine Möglichkeit eine Funktion aufzurufen, sobald sich etwas in der ersten Klasse ändert.
Ich hoffe das war verständlich und ihr könnt mir helfen
Wie gesagt, ich finde keinen Ansatz dafür.
Datenaustausch zwischen zwei Modulen
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Dann zeig doch mal den Code. Von der Beschreibung laesst sich leider nicht viel erkennen.
Aber um das mal generisch anzugehen, kannst du das eine Exemplar ja mit dem anderen bekannt machen und dein Problem damit verwalten.
Aber um das mal generisch anzugehen, kannst du das eine Exemplar ja mit dem anderen bekannt machen und dein Problem damit verwalten.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Soweit der Code:
Die Funktionen habe ich kommentiert
Jetzt will ich folgendes:
Sobald sich koordinatensystem.get('punkte') ändert soll
ausgeführt werden.
Die Funktionen habe ich kommentiert
Code: Alles auswählen
import Tkinter as tk
from tk_c_koordinatenlistbox import *
from tk_c_canvaskoordinatensystem import *
win=tk.Tk()
canv=tk.Canvas(win, width=500, height=500, bg='white')
canv.pack(side='left', padx=10)
koordinatensystem=Koordinatensystem(canv, 500, 500)
print koordinatensystem.get('punkte') #mit dieser methode werden alle punkte gelistet
# ausgabe: []
rahmen=tk.LabelFrame(win, text='Punkte')
rahmen.pack(side='right')
coordslistbox=KoordinatenListbox(rahmen)
Sobald sich koordinatensystem.get('punkte') ändert soll
Code: Alles auswählen
for c in koordinatensystem.get('punkte'): # für punkt in punkte des koordinatensystems:
coordslistbox.add_point(c) # punkt in die listbox einfügen
Ich melde mich noch einmal zu Wort:
Gibt es dafür etwas wie die ´´trace``-Methode?
(Bsp.: http://www.python-forum.de/topic-19104. ... ight=trace
Gibt es dafür etwas wie die ´´trace``-Methode?
(Bsp.: http://www.python-forum.de/topic-19104. ... ight=trace
Vorweg: Das ganze betrifft jetzt eher Tkinter
OK,
ich habe das ganze jetzt mit der .after(ms, funcid) -Methode gelöst.
Kann mir jemand sagen, ob das sinnvoll ist; kann man so weiterarbeiten?
(Ich würde ungern am Ende feststellen, dass es so nicht geht, wenn es mir auch jetzt schon jemand sagen kann)
und gleich noch eine Frage:
Wenn ich die .after - Methode innerhalb einer Klasse habe, die ich importiere,
wie verhält sich das ganze im Hauptprogramm??
OK,
ich habe das ganze jetzt mit der .after(ms, funcid) -Methode gelöst.
Kann mir jemand sagen, ob das sinnvoll ist; kann man so weiterarbeiten?
(Ich würde ungern am Ende feststellen, dass es so nicht geht, wenn es mir auch jetzt schon jemand sagen kann)
und gleich noch eine Frage:
Wenn ich die .after - Methode innerhalb einer Klasse habe, die ich importiere,
wie verhält sich das ganze im Hauptprogramm??
Die after-Methode hört sich jetzt für mich etwas überflüssig an. Du hast doch sicher irgendwo eine Methode in der ersten Klasse, in der Punkt eingefügt/gelöscht werden? Dann weißt du ja genau, wann diese Situation eintritt und kannst dann in der zweiten Klasse entsprechend Methoden aufrufen.
Code: Alles auswählen
class Spam(object):
def __init__(self, eggs):
self.points = []
self.eggs = eggs
def add(self, element):
self.points.append(element)
self.eggs.update(element, self.points)
class Eggs(object):
def update(self, new, points):
print new, "inserted into", points
eggs = Eggs()
spam = Spam(eggs)
spam.add(1)
spam.add(2)
Das Leben ist wie ein Tennisball.