einem importierten Modul ein Objekt bekannt machen??

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
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Hallo,

ich habe einen Hauptframe, in dem ich über über Button Unterprogramme aufrufe, die ich natürlich vorher importiere.
Momentan wird in jedem Unterprogramm mit

Code: Alles auswählen

self.tempdir=mkdtemp(suffix='TemppP')
der erforderliche Temp-Ordner erstellt.

Wenn ich aber im Hauptframe den Temp-Ordner erstelle, wie kann ich diesen dann in den Unterprogrammen ansprechen??

Gruß Mathi
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Durch Parameter-Übergabe.
(Entweder dem Konstruktur bei einem Klassendesign, oder eben deinen Funktionen)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Danke, ich stehe aber im Moment auf dem Schlau, denn alle versuche der Übergabe sind leider gescheitert...

hier mal ein kleines Textbeispiel, da es recht kurz ist, habe ich es gleich so gepostet.
Wie müsste self.tempdir übergeben werden??

Code: Alles auswählen

#-*- coding: iso-8859-15 -*-

import wx,modul1,modul2
from tempfile import mkdtemp

wx.SetDefaultPyEncoding("iso-8859-15") 


class MyFirstFrame(wx.Frame):
    """First Frame    """
    def __init__(self, parent, id , title): 
        """ 
        Frame initialisieren und aufbauen 
        """         
        
        wx.Frame.__init__(self, parent, id, title, style=wx.DEFAULT_DIALOG_STYLE | wx.MINIMIZE_BOX )
        
        self.SetAutoLayout(True)

        # Basispanel 
        panel = wx.Panel(self,style=wx.SIMPLE_BORDER) 
        panel.SetBackgroundColour(wx.Colour(223,238,249))
        
        grid_sizer = wx.GridBagSizer(10, 20) 

        btn1 = wx.Button(panel,-1, '  Modul 1')
        grid_sizer.Add(btn1, (1, 1),(1,1),wx.EXPAND | wx.ALL)

        btn2 = wx.Button(panel, -1,'  Modul 2') 
        grid_sizer.Add(btn2, (1, 2),(1,1),wx.EXPAND | wx.ALL)
              
        panel.SetSizer(grid_sizer) 
        panel.Fit()
        self.Fit()
        
        # Button-Click an Event-Handler binden
        btn1.Bind(event = wx.EVT_BUTTON, handler = self.show_modul1)
        btn2.Bind(event = wx.EVT_BUTTON, handler = self.show_modul2)

        self.tempdir=mkdtemp(suffix='TemppP') # <---------- hier wird self.tempdir erzeugt


    def show_modul1(self, event = None): 
        """ 
        Dieser "Event Handler" zeigt 'Modul 1' an, 
        und hier müsste ja self.tempdir übergeben werden, 
        nur wie???? 
        """ 
        modul1.modul1(parent=self)
        
        
    def show_modul2(self, event = None): 
        modul2.modul2(parent=self)       
      
def main(): 
    """Main""" 
    
    app = wx.App()        
    MyFrame = MyFirstFrame(None, -1, "*** FirstFrame ***")
    app.SetTopWindow(MyFrame)
    MyFrame.Show(True)
    app.MainLoop()
       
       
if __name__ == "__main__": 
    main()
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Wenn du es so machst (die Instanz als `parent` übergeben), kannst du im Modul doch einfach mit `parent.tempdir` darauf zugreifen!! Beschäftige dich DRINGEND mit den (OO-)Grundlagen, bevor du so Späße wie GUI-Programmierung anfängst...
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Vielen Dank....auch für die Kritik

edit:
wie kann ich sowas lernen?
Die meisten Literaturstellen sind doch Referenzen, hätte ich das z.B. mit "Python gepackt" herauslesen können?
in "Das Python3.1-Tutorial auf Deutsch" konnte ich dazu erstmal auch nichts finden.... :oops:
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Wieso liest du ein 3.1 Tutorial?

ms4py: naja wieso soll man immer OOP schon vorher können? Ich hab sie erst durch GUI's (wxWidgets) kapiert.
the more they change the more they stay the same
BlackJack

@Dav1d: OOP ist von GUI-Programmierung unabhängig, man kann OOP also vorher lernen und schon halbwegs beherrschen wenn man mit GUI-Programmierung beginnt. Dann versteht man die auch besser. Andererseits kann GUI-Programmierung das OOP-Verständnis auch festigen oder gar vertiefen, weil das ein Paradebeispiel für den sinnvollen Einsatz von OOP ist.

Was bei GUI-Programmierung in der Regel neu für die meisten ist, ist die ereignisbasierte Programmierung, also der nichtlineare Programmfluss. Wenn man OOP vorher nicht kann, hat man beim Einstieg in die GUI-Programmierung also zwei neue "Probleme" und nicht nur eines.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Kennen muss man die OOP, das ist klar, ich meinte mit können: beherrschen
the more they change the more they stay the same
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

mathi hat geschrieben:in "Das Python3.1-Tutorial auf Deutsch" konnte ich dazu erstmal auch nichts finden.... :oops:
Kapitel "Klassen" ?! :!:

Edit: @Dav1d, ganz genau, das meinte ich mit Grundlagen, die dem OP offensichtlich fehlen ;)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten