Problem mit der Verwendung von Klassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Sonntag 17. September 2006, 15:11

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"

murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Sonntag 17. September 2006, 18:40

leider ist fotoviewer nicht in der stdlib.
entweder wir bekommen ein link oder du nimmst was anderes ;-)
http://www.cs.unm.edu/~dlchao/flake/doom/
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Sonntag 17. September 2006, 19:29

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.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 18. September 2006, 09:02

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 ...
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Montag 18. September 2006, 15:00

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.
Antworten