Seite 1 von 1

Problem mit der Verwendung von Klassen

Verfasst: Sonntag 17. September 2006, 15:11
von Lufia
Hallo, ich habe eine etwas blödes Anfängerproblem:

Also ich möchte ein Programm machen das eine Fotogallerie erzeugt, es geht darum etwas Täglcih zu Fotografieren das Foto abzulegen und dann mit einer Art Daishow die Bilder hinetereinander anzuzeigen (Zeitraffer).
Momentan ist alles noch im "Rohbau" :roll: ich habe den Code unten angefügt.
Probelm ist folgendes ich möchte eine Klasse dazu verwenden ein Fenster zu öffnen in dem Werte eingegeben werden. Dann soll mit einem Button eine anders Modul nicht innerhalb der Funkntion aufgerufen und diesem dabei die eingelesen Werte übergeben werden .
Am Anfang habe ich versucht der Klasse Variablen zu übergeben in die die Parameter abgelegt werden sollten, dass hat aber nicht funktioniert. Ich suche also nach einer Möglichkeit die eingelesen Werte aus der Klasse "herauszuschicken".

Ich hoffe man versteht mein Problem. Sorry ich bin der totale Pythonanfänger und Programmiere sonst nur C.



Code: Alles auswählen

#!/usr/bin/python

#--------------------------------------
# dies ist das Hauptprogramm
#--------------------------------------


from Tkinter import *
from fotoviewer import fotofenster
from fotoviewer import fotosucher

class Gallerie:
    
    def __init__(self):
        self.fenster = Tk()
        self.ausgabe = Label(self.fenster)
        self.feldname = Label(self.fenster,text='Name')
        self.name = Entry(self.fenster)
        self.feldanfangsdatum = Label(self.fenster,text='Anfangsdatum in ddmmjjjj')
        self.anfang= Entry(self.fenster)
        self.feldenddatum = Label(self.fenster,text='Enddatum in ddmmjjjj')
        self.ende = Entry(self.fenster)
        self.feldabstand= Label(self.fenster,text='Mindestbildabstand in Tagen')
        self.abstand=Entry(self.fenster)
        self.viewerButton=Button(self.fenster,text='Gallerie starten', command = view)
        self.feldname.pack()
        self.name.pack()
        self.feldanfangsdatum.pack()
        self.anfang.pack()
        self.feldenddatum.pack()
        self.ende.pack()
        self.feldabstand.pack()
        self.abstand.pack()
        self.viewerButton.pack()
        self.ausgabe.pack()
        self.fenster.mainloop()
    
    def eingabe(self):
        """Menu programm
    
        hier werden die eingaben vorgenommen und dann
        der fotoviewer gestartet"""
        name = self.name.get()
        anfang = self.anfag.get()
        ende = self.ende.get()
        abstand = self.abstand.get()
    
def view():
          print "danke" 
          # hier sollen die Variablen name,abstand,... bekannt sein
          # ein Modul damit aufgerufen werden 

          
        
l = Gallerie()
print "Programm beendet"


Verfasst: Sonntag 17. September 2006, 18:40
von murph
leider ist fotoviewer nicht in der stdlib.
entweder wir bekommen ein link oder du nimmst was anderes ;-)

Verfasst: Sonntag 17. September 2006, 19:29
von Lufia
oh, sorry, da habe ich mich schlecht ausgedrückt.

Das modul fotoviewer werde ich selber schreiben. Ich wollte eigentlich nur wissen wie ich es hinbekomme das unter dem aufgerufenen modul view das nicht innehalb der Klasse Gallerie ist die Variablen der Klasse bekannt sind. Also das was ich unter Gallerie eingelesen habe.

Evtl. ist die Frage etwas zu einfach, bzw. zu blöd wenn ich die Sache mit c Programmiere
rufe ich eine Funktion auf und übergebe ihr dabei bestimmte Variablen, und nutze diese dann wenn die Funktion verlassen wurde.

Ich denke ich mein Denkansatz ist wohl flasch, ich dachte ich kann eine Klasse ohne Werteübergabe aufrufen. Innerhalb dieser Klasse soll dann eine Eingabe erfolgen, und aus der Klasse herraus das Modul view aufgerufen werden und beim Aufruf von view Werte übergen. Hier würde die Klase also mit einer Werteübergabe verlassen werden.

Mein Programm liest die Werte ein, aber ich bekomme sie nicht aus der Eingabe herraus also an der Stelle wo ich das Modul "view" über den Button starte ist mir nicht klar wie ich diesem die eingelesen Werte mitteilen kann.

Tut mir echt leid das ich mich so kompliziert ausdrücke.
:cry:

vieln Dank für die Mühe.

Re: Problem mit der Verwendung von Klassen

Verfasst: Montag 18. September 2006, 09:02
von Rebecca
Ich wuerde die view-Methode in die Klasse Galerie mit reinpacken:

Code: Alles auswählen

class Galerie:
    
    def __init__(self):
        ...

    def eingabe(self):
        self.name = "bla"
        self.anfang = 3 
 
   
    def view(self):
        print self.name
        print self.anfang  
Ansonsten kann man eine Funktion mit return was zurueckgeben lassen, das irgendwo speichern und als Parameter an die naechste Funktion uebergeben.

Uebrigens schreibt sich Galerie mit nur einem L ...

Verfasst: Montag 18. September 2006, 15:00
von Lufia
Vielen dank, die Methode mit in die Klasse zu packen ist ist wohl echt die beste Variante.

Ich war/bin wohl etwas verwirrt mit dem Obejektoreintierten programmieren, vor allem bei der Verwendung von Klassen,etc. :shock: aber Übung macht den Meister

Nun ja ich werde es mal nächstes Wochenende weiter versuchen und wenn ich fertig bin berichten ob alles funktioniert.